很难找到解决方案,反过来有几种解决方案。
我考虑用自己的大写版本替换每个“”和后面的第一个字符:
value.toLowerCase().replace(/\s+/g, function (g) { return g[1].toUpperCase() })
只有正则表达式 / \ s + / g 需要更改以匹配第一个字符。
如果存在这样的问题,请提供链接,我将自行关闭。我找不到SO的解决方案
示例:
“我遛狗去公园”或“我把我的狗带到公园”=> “iWalkMyDogToThePark”
答案 0 :(得分:6)
你需要抓住下一个角色。您可以使用(。)或([a-z])
var toCamelCase = function(string){
return string.replace(/\s+(.)/g, function (match, group) {
return group.toUpperCase()
})
}
答案 1 :(得分:3)
也许你可以用这个:
function camelCase(value) {
return value.toLowerCase().replace(/\s+(.)/g, function(match, group1) {
return group1.toUpperCase();
});
}
(摘自here)
答案 2 :(得分:0)
你在寻找这样的东西:
var string = "Hello there what are You doing yes";
string.replace(/([A-Z])([a-z]+)\s+([a-z])([a-z]+)/g, function($1, $2, $3, $4, $5) {
return $2.toLowerCase() + $3 + $4.toUpperCase() + $5;
});
打印出"helloThere what are youDoing yes"
。
答案 3 :(得分:0)
您可以使用此驼峰转换代码:
function toCamelCase(str) {
return str.replace(/(?:^.|[A-Z]|\b.)/g, function(letter, index) {
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
}).replace(/\s+/g, '');
}
var val = toCamelCase("Sentence case");
//=> sentenceCase
val = toCamelCase('hello how are you');
//=> helloHowAreYou
答案 4 :(得分:0)
我认为没有Regex就可以实现更简单的解决方案。只需从空格中拆分字符串,然后将它们与适当的套管连接起来。
var value = '...';
var camelCase = value.split(' ').map(function(word, i) {
return (word[0] || '')[i == 0 ? 'toLowerCase' : 'toUpperCase']() +
word.substr(1).toLowerCase();
}).join('');
<强> JSFiddle 强>
答案 5 :(得分:0)
我最终做了以下(ES6):
function camelCase (str) {
return str.split(/[^a-zA-Z0-9]/g).map((x, index) => {
if (index === 0) return x.toLowerCase()
return x.substr(0, 1).toUpperCase() + x.substr(1).toLowerCase()
}).join('')
}
假设一般情况下,转换为驼峰式大小写的目的是针对变量,因此不应存在重音或奇数字符(或将被拆分)。
camelCase("I walk my dog to the park")
> "iWalkMyDogToThePark"