我正在使用regex
让我获得95%的胜利:
var string = element.replace(/([^\W_]+[^\s\u2014\u002E]*) */g, function(txt){
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
})
正则表达式应该采用任何字符串并在标题情况下返回它。例如:
hello -> Hello
//作品
hElLo mY nAme Is -> Hello My Name Is
//作品
What-did-you-say-to-me? -> What-Did-You-Say-To-Me?
//不起作用(连字符后的所有字符都返回小写。
如果还有其他方案我没有考虑过,请告诉我。我不想要除了句号和短划线之外的特殊字符(例如,我不想在撇号之后大写)。
答案 0 :(得分:1)
您可以使用单词边界断言\b
来更轻松地找到单词:
/\b[\w']+\b/g
这将找到起始单词边界,所有“单词”字符和撇号,后跟另一个单词边界。由于破折号应该算作单词边界,这应该可以捕获您的问题文本。