我发现这个例子把CamelCase变成了破折号。我对代码进行了修改,将CamelCase改为Sentencecase,使用空格而不是破折号。它的工作原理很好,但不适用于一个单词,如"i“和"a”。有什么办法把它也包括进去吗?
发布于 2012-12-05 09:55:40
最后一个版本:
"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(/^[a-z]|[A-Z]/g, function(v, i) {
return i === 0 ? v.toUpperCase() : " " + v.toLowerCase();
}) // "This is not a pain"
);
console.log(
"thisIsAPain"
.match(/^(?:[^A-Z]+)|[A-Z](?:[^A-Z]*)+/g)
.join(" ")
.toLowerCase()
.replace(/^[a-z]/, function(v) {
return v.toUpperCase();
}) // "This is a pain"
);
发布于 2012-12-05 10:01:49
将函数的第一行更改为
var spacedCamel = str.replace(/([A-Z])/g, " $1");发布于 2012-12-05 10:14:14
这方面的算法如下:
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);
}请参阅此链接
https://stackoverflow.com/questions/13720256
复制相似问题