2011-11-26 129 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}`); 
相关问题