function toTitleCase(str){
var styleName = $("a.monogramClassSelected").attr("styleKey");
if (styleName == 'script') {
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}).replace(/\s/, '');
} else {
return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
}
这有效(感谢下面的帮助) - 删除空格并将首字母大写。
但是,我需要不同的功能,并且第一次没有正确构建我的问题。
我需要使用正则表达式才允许首字母大写。上面的字符串替换方法不能完全工作,因为用户可以通过使用空格来绕过该方法。所以他们可以拥有“To Two”。我需要重做正则表达式,只允许第一个字母大写,无论空格如何。 (并且第一个字母不必大写)
感谢大家的帮助到目前为止!
答案 0 :(得分:1)
这个正则表达式替换零形式或完全一个空格的所有序列,后面跟大写字母只有字母,同时保持文本的其余部分不变(允许多个空格)
str.replace(/\s{0,1}([A-Z])(\s*\w*)/g, '$1$2');
替换字符串中的$ 1和$ 2可以访问这些组。
<强>示例强>
输入“一个从未犯过错误的人从未尝试过任何新事物。 - Albert Einstein :)”
替换字符串“一个人从未犯过错误从未尝试过任何新的东西。-AlbertEinstein :)”
如果您想删除多个空格而不是大写字母前面的零或一个空格,请在上面的表达式中使用\s*
代替\s{0,1}
。
答案 1 :(得分:0)
要删除空格,这对我有用:
function toTitleCase(str){
str = str.replace(/\s[A-Z]/, '');
// str = str.replace(/[A-Z]\s/, '');
return str;
}
答案 2 :(得分:0)
这样做:
function UppercaseFirst(str) {
str = str.replace(/^\s+/, '');
str = str.charAt(0).toUpperCase() + str.substr(1);
return str
}
var mystring = " this is a test";
alert(UppercaseFirst(mystring));