我正在尝试以下解决方案,效果很好,但我还有一个额外的要求,我需要从转换中排除首字母缩略词(所有大写字母)。
String.prototype.capitalize = function(lower) {
return (lower ? this.toLowerCase() : this).replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};
有关如何做到这一点的任何想法?
答案 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
- 全球;匹配此表达式的所有实例