我正在使用下面的函数(第一个)来改变一些文本的大小写,这很棒。但是我希望它能够考虑到大肆宣传之后的信件等。任何人都可以帮我修改它以包含这个吗?我已经能够做第二个功能,但我相信你一定能把它放在正则表达式中吗?
function toProperCase(str)
{
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
//don't want to do it like this;
function toProperCase(str)
{
str = str.replace("-", "- ");
str = str.replace("'", "' ");
str = str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
str = str.replace("- ", "-");
str = str.replace("' ", "'");
return str;
}
答案 0 :(得分:0)
也许这适合你?
str.replace(/\w*/g, function(txt){
return txt.charAt(0).toUpperCase() +
txt.substr(1).toLowerCase();
}
);
答案 1 :(得分:0)
可能这对您的用例更有效:
str.replace(/\b[a-z][\w'-]*/ig, function(txt){
return txt.charAt(0).toUpperCase() +
txt.substr(1).toLowerCase();
}
);
这基本上是找到所有单词,其中第一个字符是字母表,后面是单词字符或连字符或者否。
答案 2 :(得分:0)
function toProperCase(str) {
return str.replace(/\b./g,
function(txt){return txt.toUpperCase()}
)
}
这将找到每个以字边界开头的字符,并将其替换为大写字母。
单词边界是字符串开头和结尾的位置,以及单词字符和非单词字符之间的位置。单词字符是字母,数字或下划线,非单词字符是其他所有字符。
你对“连字符,撇号等”并不十分具体,所以我猜它适用于任何不是字母,数字或下划线的东西。
请注意,您不必细分找到的字符串或添加小写字符串,因为replace
仅替换匹配的字符:在这种情况下,它是单个字符。