/^[a-z]+|[A-Z][a-z]*/g
/ ^[a-z]+ // 1 or more lowercase letters at the beginning of the string
| // OR
[A-Z][a-z]* // a capital letter followed by zero or more lowercase letters
/g // global, match all instances
示例函数:
var camelCaseToWords = function(str){
return str.match(/^[a-z]+|[A-Z][a-z]*/g).map(function(x){
return x[0].toUpperCase() + x.substr(1).toLowerCase();
}).join(' ');
};
camelCaseToWords('camelCaseString');
// Camel Case String
camelCaseToWords('thisIsATest');
// This Is A Test
my_str = 'helloWorld';
function readable(str) {
// and this was a mistake about javascript/actionscript being able to capitalize
// by adding 32
returnString = str[0].toUpperCase();
for(var i = 1; i < str.length; i++) {
// my mistakes here were that it needs to be between BOTH 'A' and 'Z' inclusive
if(str[i] >= 'A' && str[i] <= 'Z') {
returnString += ' ' + str[i];
}
else if(str[i] == '-' || str[i] == '_') {
returnString += ' ';
}
else {
returnString += str[i];
}
}
return returnString;
}
var titleCase = s => s
.replace(/(^|[_-])([a-z])/g, (a, b, c) => c.toUpperCase())
.replace(/([a-z])([A-Z])/g, (a, b, c) => `${b} ${c}`);
console.log(titleCase("helloWorld"));
console.log(titleCase("hello-world"));
console.log(titleCase("hello_world"));
7条答案
按热度按时间1qczuiv01#
按非词拆分;资本化加入:
yzuktlbb2#
用正则表达式提取所有单词,将它们大写,然后用空格连接。
正则表达式示例:
示例函数:
hmae6n7t3#
以下是基于Ricks C示例代码的ActionScript版本。对于JavaScript版本,请删除强类型。例如,将
var value:String
更改为var value
。基本上,请删除任何以分号、:String
、:int
等开头的声明。JavaScript版本:
uinbv5nw4#
您可以使用String.replace的替换函数,例如
hello-world
和hello_world
的工作原理类似。参见JSFiddle
55ooxyrt5#
我不知道是否已经有一个内置的方法来做这件事,但是你可以循环通过字符串,每当你看到一个字符,你想这样做。
在您的情况下,如下所示:
编辑:
在无数的评论之后,我逐渐意识到我放了一些破碎的代码:p
下面是它的一个测试版本:
yk9xbfzb6#
如果可以选择使用库,
Lodash
的startCase
或lowerCase
可能会很有用:https://lodash.com/docs/#startCase
https://lodash.com/docs/#lowerCase
dtcbnfnu7#
使用正则表达式的非优雅的一个行程序替换为函数。
替换1 -大写首字母并删除_-
replace 2 -在小写字母和大写字母之间添加空格