【问题标题】:Return First Character of each word in a string返回字符串中每个单词的第一个字符
【发布时间】:2014-02-21 10:15:41
【问题描述】:

我有一个带有名称的字符串,我想将它们转换为首字母。例如:

  • 约翰·怀特 -> JW
  • 约翰·P·怀特 -> JPW

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

我的字符串是这样的

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

我想改成这个

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

有什么帮助吗?谢谢

【问题讨论】:

标签: javascript jquery regex string


【解决方案1】:

我建议你使用RegExp,这是Example

var myStr = "John P White";
var matches = myStr.match(/\b(\w)/g);
console.log(matches.join(''));

\b 在字边界处断言位置(^\w|\w$|\W\w|\w\W)

第一捕获组 (\w)

\w 匹配任何单词字符(等于[a-zA-Z0-9_]

全局模式标志

g 修饰符:全局。所有匹配(第一次匹配后不返回)

如需更好的解释,请访问here

【讨论】:

  • 这会中断带有撇号或连字符的名称
【解决方案2】:
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);

【讨论】:

    【解决方案3】:

    你可以这样做:

    var words = $('a').text().split(' ');
    var text = '';
    $.each(words, function () {
        text +=  this.substring(0, 1);
    });
    $('a').text(text);
    

    Fiddle Demo

    【讨论】:

      【解决方案4】:

      您可以执行以下操作:

      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

      【讨论】:

      • 我认为这是最好的答案。它可以处理连字符
      【解决方案5】:

      使用分隔符为space,您可以拆分名称并将其放入数组中。然后你可以取数组中每个元素的第一个索引。

      【讨论】:

        【解决方案6】:

        您可以使用正则表达式匹配任何不是大写字母的内容,然后简单地将其删除。

        <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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-10
          • 1970-01-01
          • 2015-05-14
          • 2018-05-14
          • 1970-01-01
          • 2014-11-26
          相关资源
          最近更新 更多