使用Javascript,如何大写字符串中的每个单词不包括首字母缩略词?

时间:2015-05-04 20:58:17

标签: javascript string

我正在尝试以下解决方案,效果很好,但我还有一个额外的要求,我需要从转换中排除首字母缩略词(所有大写字母)。

String.prototype.capitalize = function(lower) {
    return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};

有关如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

这样做:

String.prototype.capitalize = function() {
    return this
             .replace(/(\w*[a-z0-9_]+\w*)/g, function(a) {
                 return a.toLowerCase()
             }).replace(/(?:^|\s)\S/g, function(a) { 
                 return a.toUpperCase();
             });
};

第一部分找到所有至少有一个不是大写字母的单词字符的单词 - 即首字母缩略词。

答案 1 :(得分:0)

"i like cats. So does the ASPCA. Cats like milk, tho.".replace(/\b[a-z]/g, function(m) { return m.toUpperCase(); });

//=> "I Like Cats. So Does The ASPCA. Cats Like Milk, Tho."

这是一个很好的功能供你使用

function capitalize(s) { return s.toUpperCase(); }

String.prototype.capitalize = function() {
  return this.toString().replace(/\b[a-z]/g, capitalize);
};

现在您可以直接在字符串上调用.capitalize

var s = "i like cats. So does the ASPCA. Cats like milk, tho.";

s.capitalize();
//=> "I Like Cats. So Does The ASPCA. Cats Like Milk, Tho."

RegExp

  • \b - 匹配word boundary(零宽度)
  • [a-z] - 匹配一个字符a-z(区分大小写)

标志

  • g - 全球;匹配此表达式的所有实例