我有一个名字的字符串,我想将它们转换为缩写。 E.g:
我正在寻找如何最好地做到这一点的建议。我已经研究过使用split()
并在这里http://www.w3schools.com/jsref/jsref_split.asp进行了研究,但是当我不知道要查找的字符时,找不到如何定位和返回第一个字母的好例子。
我的字符串看起来像这样
<a href="#">John White</a>
我想改成这个
<a href="#">JW</a>
有任何帮助吗?感谢
答案 0 :(得分:13)
var myStr = "John P White";
var matches = myStr.match(/\b(\w)/g);
alert(matches.join(''));
\b
在字边界(^\w|\w$|\W\w|\w\W)
第一捕获组(
\w
)
\w
匹配任何字词(等于[a-zA-Z0-9_]
)全球模式标志
g
修饰符:全局。所有比赛(首场比赛后不返回)
要获得更好的解释,请访问here
答案 1 :(得分:1)
你可以这样做:
var words = $('a').text().split(' ');
var text = '';
$.each(words, function () {
text += this.substring(0, 1);
});
$('a').text(text);
<强> Fiddle Demo 强>
答案 2 :(得分:1)
您可以执行以下操作:
var name = "John P White",
data = name.split(' '), output = "";
for ( var i = 0; i < data.length; i++) {
output += data[i].substring(0,1);
}
alert(output);
答案 3 :(得分:0)
使用分隔符space
,您可以拆分名称并将其放入数组中。然后你可以获取Array中每个元素的第一个索引。
答案 4 :(得分:0)
var name = "John P White";
function initials(value){
var result = "";
var tokens = value.split(/\s/);
for(var i =0; i < tokens.length; i++){
result += tokens[i].substring(0,1).toUpperCase();
}
return result;
}
initials(name);
答案 5 :(得分:0)
您可以使用正则表达式匹配任何非大写字母的内容,然后只需删除它。
<a href="#">John White</a>
<a href="#">John P Brown</a>
$('a').each(function(){
var initials = $(this).text().replace(/[^A-Z]/g, "");
$(this).text(initials);
});
<强> fiddle 强>