JavaScript的:正则表达式驼峰句子([removed] regex CamelCase to

2019-08-03 13:30发布

我发现这个例子来改变首字母大写破折号。 我修改代码来改变驼峰用空格代替破折号Sentencecase。 它工作正常,但不是一个单词的字母,如“i”和“一个”。 任何想法如何把那个呢?

  • thisIsAPain - >这是一个痛苦

     var str = "thisIsAPain"; str = camelCaseToSpacedSentenceCase(str); alert(str) function camelCaseToSpacedSentenceCase(str) { var spacedCamel = str.replace(/\W+/g, " ").replace(/([az\d])([AZ])/g, "$1 $2"); spacedCamel = spacedCamel.toLowerCase(); spacedCamel = spacedCamel.substring(0,1).toUpperCase() + spacedCamel.substring(1,spacedCamel.length) return spacedCamel; } 

Answer 1:

在最后的版本:

"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(/^[az]|[AZ]/g, function(v, i) { return i === 0 ? v.toUpperCase() : " " + v.toLowerCase(); }) // "This is not a pain" ); console.log( "thisIsAPain" .match(/^(?:[^AZ]+)|[AZ](?:[^AZ]*)+/g) .join(" ") .toLowerCase() .replace(/^[az]/, function(v) { return v.toUpperCase(); }) // "This is a pain" ); 



Answer 2:

你的函数的第一行更改为

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


Answer 3:

该算法这是如下:

  1. 空格字符添加到所有大写字符。
  2. 修剪所有尾随和前导空格。
  3. 大写的第一个字符。

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);
}

请参阅此链接



文章来源: JavaScript: regex CamelCase to Sentence