在JavaScript中使用Initcap

时间:2014-05-19 15:19:29

标签: javascript regex

我正在尝试构建一个JavaScript initcap函数,该函数正确地将每个单词中的第一个字母转换为大写字母,将其他字母转换为小写字母。

我找到的所有示例都会转换第一个不正确的字符,例如: joe smith(c e o)应该转换为Joe Smith(C E O),而不是Joe Smith(c E O)

CSS转换不是一个选项,因为值会返回给服务器。

可能使用正则表达式是要走的路,但我不是这方面的专家。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

对这个重复的答案进行小编辑,如果您阅读了对已接受答案的评论,您将在那里找到答案:

function toTitleCase(str)
{
    return str.replace(/([^\W_]+[^\s-]*) */g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}

答案 1 :(得分:0)

基于前瞻的另一个版本:

joe smith(c e o)'.replace(/\b[a-z](?=(?:[a-z]|\W|$))/g, function($0) {
    return $0.toUpperCase();})
//=> "Joe Smith(C E O)"