我想在JavaScript中对{1}形式的字符串执行ucwords()
,它应该返回Test1_Test2_Test3。
我已经在SO上找到了ucwords
函数,但它只需要空格作为新的单词分隔符。这是功能:
function ucwords(str) {
return (str + '').replace(/^([a-z])|\s+([a-z])/g, function ($1) {
return $1.toUpperCase();
});
有人可以帮忙吗?
答案 0 :(得分:4)
只需在可接受的分词符列表中添加下划线:
function ucwords(str) {
return (str + '').replace(/^([a-z])|[\s_]+([a-z])/g, function ($1) {
return $1.toUpperCase();
})
};
正如您所见,我将\s+
的位替换为[\s_]+
答案 1 :(得分:2)
答案 2 :(得分:0)
其他两个似乎相当完整的解决方案:
String.prototype.ucwords = function() {
str = this.toLowerCase();
return str.replace(/(^([a-zA-Z\p{M}]))|([ -][a-zA-Z\p{M}])/g,
function($1){
return $1.toUpperCase();
});
}
$('#someDIV').ucwords();
来源:http://blog.justin.kelly.org.au/ucwords-javascript/
function ucwords (str) {
return (str + '').replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function ($1) {
return $1.toUpperCase();
});
}
ucwords('kevin van zonneveld');
来源:http://phpjs.org/functions/ucwords/
对我很好!