返回字符串中每个单词的第一个字符

时间:2014-02-21 10:15:41

标签: javascript jquery regex string

我有一个名字的字符串,我想将它们转换为缩写。 E.g:

  • John White - > JW
  • John P White - > JPW

我正在寻找如何最好地做到这一点的建议。我已经研究过使用split()并在这里http://www.w3schools.com/jsref/jsref_split.asp进行了研究,但是当我不知道要查找的字符时,找不到如何定位和返回第一个字母的好例子。

我的字符串看起来像这样

<a href="#">John White</a>

我想改成这个

<a href="#">JW</a>

有任何帮助吗?感谢

6 个答案:

答案 0 :(得分:13)

我建议您使用RegExp,这是Example

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);

Demo

答案 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