如何獲取字符串中每個單詞的第一個字母,以便接收縮寫?使用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
不太適用於單詞變音詞 –