如何将“骆驼案例”转换为“骆驼案例”?

2022-08-30 01:21:31

我一直在尝试获取JavaScript正则表达式命令以将类似的东西转换为,但是我得到的最接近的是替换一个字母,导致类似或.有什么想法吗?"thisString""This String""Thi String""This tring"

为了澄清我可以处理大写字母的简单性,我只是对正则表达式不那么强大,并且拆分为我遇到麻烦的地方。"somethingLikeThis""something Like This"


答案 1
"thisStringIsGood"
    // insert a space before all caps
    .replace(/([A-Z])/g, ' $1')
    // uppercase the first character
    .replace(/^./, function(str){ return str.toUpperCase(); })

显示

This String Is Good

(function() {

  const textbox = document.querySelector('#textbox')
  const result = document.querySelector('#result')
  function split() {
      result.innerText = textbox.value
        // insert a space before all caps
        .replace(/([A-Z])/g, ' $1')
        // uppercase the first character
        .replace(/^./, (str) => str.toUpperCase())
    };

  textbox.addEventListener('input', split);
  split();
}());
#result {
  margin-top: 1em;
  padding: .5em;
  background: #eee;
  white-space: pre;
}
<div>
  Text to split
  <input id="textbox" value="thisStringIsGood" />
</div>

<div id="result"></div>

答案 2

我对此很感兴趣,特别是在处理大写字母序列方面,例如在xmlHTTPRequest中。列出的函数将生成“Xml H T T P Request”或“Xml HTTPRequest”,我的函数生成“Xml HTTP Request”。

function unCamelCase (str){
    return str
        // insert a space between lower & upper
        .replace(/([a-z])([A-Z])/g, '$1 $2')
        // space before last upper in a sequence followed by lower
        .replace(/\b([A-Z]+)([A-Z])([a-z])/, '$1 $2$3')
        // uppercase the first character
        .replace(/^./, function(str){ return str.toUpperCase(); })
}

在要点中还有一个String.prototype版本。