我发现这个例子来改变首字母大写破折号。 我修改代码来改变驼峰用空格代替破折号Sentencecase。 它工作正常,但不是一个单词的字母,如“i”和“一个”。 任何想法如何把那个呢?
thisIsAPain - >这是一个痛苦
var str = "thisIsAPain"; str = camelCaseToSpacedSentenceCase(str); alert(str) function camelCaseToSpacedSentenceCase(str) { var spacedCamel = str.replace(/\W+/g, " ").replace(/([az\d])([AZ])/g, "$1 $2"); spacedCamel = spacedCamel.toLowerCase(); spacedCamel = spacedCamel.substring(0,1).toUpperCase() + spacedCamel.substring(1,spacedCamel.length) return spacedCamel; }
在最后的版本:
"thisIsNotAPain"
.replace(/^[a-z]|[A-Z]/g, function(v, i) {
return i === 0 ? v.toUpperCase() : " " + v.toLowerCase();
}); // "This is not a pain"
旧的解决方案:
"thisIsAPain"
.match(/^(?:[^A-Z]+)|[A-Z](?:[^A-Z]*)+/g)
.join(" ")
.toLowerCase()
.replace(/^[a-z]/, function(v) {
return v.toUpperCase();
}); // "This is a pain"
console.log( "thisIsNotAPain" .replace(/^[az]|[AZ]/g, function(v, i) { return i === 0 ? v.toUpperCase() : " " + v.toLowerCase(); }) // "This is not a pain" ); console.log( "thisIsAPain" .match(/^(?:[^AZ]+)|[AZ](?:[^AZ]*)+/g) .join(" ") .toLowerCase() .replace(/^[az]/, function(v) { return v.toUpperCase(); }) // "This is a pain" );
你的函数的第一行更改为
var spacedCamel = str.replace(/([A-Z])/g, " $1");
该算法这是如下:
- 空格字符添加到所有大写字符。
- 修剪所有尾随和前导空格。
- 大写的第一个字符。
Javascript代码:
function camelToSpace(str) {
//Add space on all uppercase letters
var result = str.replace(/([A-Z])/g, ' $1').toLowerCase();
//Trim leading and trailing spaces
result = result.trim();
//Uppercase first letter
return result.charAt(0).toUpperCase() + result.slice(1);
}
请参阅此链接