2011-09-12 306 views
0
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

什么语法错误,你好吗? – 2011-09-12 16:30:26

+0

Javascript不支持titlecase,所以这个任务是不可能的。 – tchrist

+0

如果您提供样本输入列表和相应的替换字符串,将会很有帮助。 –

回答

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)); 
+0

查看问题编辑。 – Jason

+0

已编辑,现在它应该做你什么(即使有空格第一) – ajax333221

0

只删除空格,这个工作对我来说:

function toTitleCase(str){ 
    str = str.replace(/\s[A-Z]/, ''); 
    // str = str.replace(/[A-Z]\s/, ''); 
    return str; 
} 
+0

对我不起作用。 – Jason

+0

更新了答案 –

+0

请参阅上面的修改。 – Jason

1

这个正则表达式替换零或正好一个空格,然后由大写字母只由字母,同时保持其他形式的所有序列的文字未被触及(允许多个空格)

str.replace(/\s{0,1}([A-Z])(\s*\w*)/g, '$1$2'); 

在替换字符串中可以通过$ 1和$ 2访问这些组。

regex explaination

样品

输入 “从不犯错的人从来没有尝试过任何新的东西 - 爱因斯坦:)”

替换字符串“A personWho从未犯了一个错误从未尝试新事物。-AlbertEinstein :)”

如果您想删除多个空格而不是大写字母前面的零个或一个空格,请在上述表达式中使用\s*而不是\s{0,1}

+0

请参阅上面的编辑。 – Jason

+0

更新了答案。 –

+0

并不在此上下文中'\t \t返回str.replace(/ \ W \ S */g时,功能(TXT){返回txt.charAt(0).toUpperCase()+ txt.substr工作(1).toLowerCase ();})。替换(/ \ s {0,1}([A-Z])(\ s * \ w *)/ g,'$ 1 $ 2');' – Jason

相关问题