为什么不将LowCase应用于以下替换链中的每个单词?

时间:2016-03-11 02:20:12

标签: javascript

我想将此livingRoom转换为此Living room

因此,作为第一步,我想打破驼峰案例并将每个单词转换为小写:

"livingRoom"
  .replace(/([A-Z])/g, ' $1')
  .replace(/^./, function(str){ return str.toLowerCase(); })

然而,我明白了:

// => "living Room"

可能是什么原因?

4 个答案:

答案 0 :(得分:2)

你可以尝试:

"livingRoom"
  .replace(/([A-Z])/g, function(str){ return ' '+ str.toLowerCase(); })
  .replace(/^.?/, function(str){ return str.toUpperCase(); })
//"Living room"

答案 1 :(得分:1)

/^./只匹配第一个字符" l",它已经是小写字母。

答案 2 :(得分:0)

你有,

// This replace 'R' in 'livingRoom' with space + group1, which is ' R'.
.replace(/([A-Z])/g, ' $1') // Returns 'living Room'

// This finds any character after the beginning of line. which is 'l'.
.replace(/^./, function (str) { return str.toLowerCase() }); // str is 'l'

然而,还有另一种简单的方法来接近“起居室”,例如。

var str = "livingRoom"
    .replace(/([A-Z])/g, ' $1');

// str is now 'living Room'
// Uppercase the first char in str, and concat it with the lowercased rest.
str = str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();
// str is now 'Living room'

答案 3 :(得分:0)

console.log("livingRoom"
  .replace(/([A-Z])/g, ' $1')
  .replace(/ [A-Z]/, function(str){ return str.toLowerCase(); })
  .replace(/^./, function(str){ return str.toUpperCase(); }));

^。只是替换第一个字符