2011-11-26 192 views

回答

69

我認爲你要找的是一個提供的字符串的首字母縮寫。

var str  = "Java Script Object Notation"; 
var matches = str.match(/\b(\w)/g);    // ['J','S','O','N'] 
var acronym = matches.join('');     // JSON 

注:這會爲複姓/ apostrophe'd話Help-me I'm Dieing失敗將是HmImD。如果這不是你想要的,拆分的空間,抓住第一個字母的方法可能是你想要的。

+0

不錯..謝謝! –

+0

@Armando:如果兩個答案快速連續發佈,那麼SO有點兒好玩。 – hugomg

+0

不太適用於單詞變音詞 –

15

我認爲你可以

'Aa Bb'.match(/\b\w/g).join('') 

說明這樣做:獲取所有/g非字母數字字符後出現的字母數字字符\w(即:一個字邊界\b後),把它們放在與.match()的數組,並在一個字符串.join('')


參加一切取決於世界衛生大會t您想要做的,你也可以考慮簡單地選擇所有的大寫字符:

'JavaScript Object Notation'.match(/[A-Z]/g).join('') 
+0

不錯,謝謝! –

+0

我認爲正則表達式對於這種情況是過度的。 – JesseBuesking

+0

@JesseB:我不知道,拆分的替代解決方案有點繁瑣,必須擔心順序中的多個空格字符以及點或逗號等其他分隔符。 – hugomg

0

如何:

var str = "", abbr = ""; 
str = "Java Script Object Notation"; 
str = str.split(' '); 
for (i = 0; i < str.length; i++) { 
    abbr += str[i].substr(0,1); 
} 
alert(abbr); 

Working Example.

0

這應該這樣做。

var s = "Java Script Object Notation", 
    a = s.split(' '), 
    l = a.length, 
    i = 0, 
    n = ""; 

for (; i < l; ++i) 
{ 
    n += a[i].charAt(0); 
} 

console.log(n); 
1

嘗試 -

var text = ''; 
var arr = "Java Script Object Notation".split(' '); 
for(i=0;i<arr.length;i++) { 
    text += arr[i].substr(0,1) 
}  
alert(text); 

演示 - http://jsfiddle.net/r2maQ/

7

最簡單的方法沒有正則表達式

var abbr = "Java Script Object Notation".split(' ').map(function(item){return item[0]}).join(''); 
0

正則表達式版本JavaScript是不兼容的Unicode上比的ECMAScript 6年長,因此對於那些想要支持「å」字樣的人來說也是需要的依賴於非正則表達式版本的腳本。

在版本6上的事件,您需要用\ u指示Unicode。

更多細節:使用https://mathiasbynens.be/notes/es6-unicode-regex

2

map(從函數式編程)

'use strict'; 

function acronym(words) 
{ 
    if (!words) { return ''; } 

    var first_letter = function(x){ if (x) { return x[0]; } else { return ''; }}; 

    return words.split(' ').map(first_letter).join(''); 
} 
0

然而使用reduce功能的另一種選擇:

var value = "Java Script Object Notation"; 
 

 
var result = value.split(' ').reduce(function(previous, current){ 
 
    return {v : previous.v + current[0]}; 
 
},{v:""}); 
 

 

 
$("#output").text(result.v);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<pre id="output"/>

0

@BotNet缺陷: 我想我解決了它難以忍受的正則表達式教程3天后:

==>我是一個動物

(用來捕捉M的我),因爲字邊界,它似乎爲我這樣工作。

/(\s|^)([a-z])/gi 
1

要添加到偉大的例子,你可以做這樣的ES6

const x = "Java Script Object Notation".split(' ').map(x => x[0]).join(''); 
console.log(x); // JSON 

和這個作品太多,但請忽略它,我在這裏就有點堅果:-)

const [j,s,o,n] = "Java Script Object Notation".split(' ').map(x => x[0]); 
console.log(`${j}${s}${o}${n}`); 
相關問題