如何获取字符串中每个单词的第一个字母,以便接收缩写?使用Javascript获取字符串中每个单词的第一个字母
String: "Java Script Object Notation"
Wanted result: "JSON"
如何获取字符串中每个单词的第一个字母,以便接收缩写?使用Javascript获取字符串中每个单词的第一个字母
String: "Java Script Object Notation"
Wanted result: "JSON"
我认为你要找的是一个提供的字符串的首字母缩写。
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
。如果这不是你想要的,拆分的空间,抓住第一个字母的方法可能是你想要的。
我认为你可以
'Aa Bb'.match(/\b\w/g).join('')
说明这样做:获取所有/g
非字母数字字符后出现的字母数字字符\w
(即:一个字边界\b
后),把它们放在与.match()
的数组,并在一个字符串.join('')
参加一切取决于世界卫生大会t您想要做的,你也可以考虑简单地选择所有的大写字符:
'JavaScript Object Notation'.match(/[A-Z]/g).join('')
不错,谢谢! –
我认为正则表达式对于这种情况是过度的。 – JesseBuesking
@JesseB:我不知道,拆分的替代解决方案有点繁琐,必须担心顺序中的多个空格字符以及点或逗号等其他分隔符。 – hugomg
如何:
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);
这应该这样做。
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);
尝试 -
var text = '';
var arr = "Java Script Object Notation".split(' ');
for(i=0;i<arr.length;i++) {
text += arr[i].substr(0,1)
}
alert(text);
最简单的方法没有正则表达式
var abbr = "Java Script Object Notation".split(' ').map(function(item){return item[0]}).join('');
正则表达式版本JavaScript是不兼容的Unicode上比的ECMAScript 6年长,因此对于那些想要支持“å”字样的人来说也是需要的依赖于非正则表达式版本的脚本。
在版本6上的事件,您需要用\ u指示Unicode。
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('');
}
然而使用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"/>
@BotNet缺陷: 我想我解决了它难以忍受的正则表达式教程3天后:
==>我是一个动物
(用来捕捉M的我),因为字边界,它似乎为我这样工作。
/(\s|^)([a-z])/gi
要添加到伟大的例子,你可以做这样的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}`);
不错..谢谢! –
@Armando:如果两个答案快速连续发布,那么SO有点儿好玩。 – hugomg
不太适用于单词变音词 –