我已经制作了这段代码。我想要一个小的正则表达式。
String.prototype.capitalize = function() {
return this.charAt(0).toUpperCase() + this.slice(1);
}
String.prototype.initCap = function () {
var new_str = this.split(' '),
i,
arr = [];
for (i = 0; i < new_str.length; i++) {
arr.push(initCap(new_str[i]).capitalize());
}
return arr.join(' ');
}
alert("hello world".initCap());
我想要什么
“你好世界”.initCap()=&gt; Hello World
“hEllo woRld”.initCap()=&gt; Hello World
我的上述代码为我提供了解决方案,但我希望使用正则表达式提供更好,更快的解决方案
答案 0 :(得分:16)
您可以尝试:
str = "hEllo woRld";
String.prototype.initCap = function () {
return this.toLowerCase().replace(/(?:^|\s)[a-z]/g, function (m) {
return m.toUpperCase();
});
};
alert(str.initCap());
答案 1 :(得分:1)
str="hello";
init_cap=str[0].toUpperCase() + str.substring(1,str.length).toLowerCase();
alert(init_cap);
答案 2 :(得分:0)
如果要用撇号/破折号说明名称,或者在句子之间的句点后可能会省略空格,则可能要使用\ b(乞g或单词结尾)而不是\ s(空格) )在您的正则表达式中大写,并在空格,撇号,句号,破折号等后面加上大写字母。
str = "hEllo billie-ray o'mALLEY-o'rouke.Please come on in.";
String.prototype.initCap = function () {
return this.toLowerCase().replace(/(?:^|\b)[a-z]/g, function (m) {
return m.toUpperCase();
});
};
alert(str.initCap());
输出:您好Billie-Ray O'Malley-O'Rouke。请过来。