首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript: CamelCase语句的正则表达式

JavaScript: CamelCase语句的正则表达式
EN

Stack Overflow用户
提问于 2012-12-05 09:45:39
回答 3查看 8K关注 0票数 4

我发现这个例子把CamelCase变成了破折号。我对代码进行了修改,将CamelCase改为Sentencecase,使用空格而不是破折号。它的工作原理很好,但不适用于一个单词,如"i“和"a”。有什么办法把它也包括进去吗?

  • thisIsAPain ->这是一种痛苦 var str = "thisIsAPain";str = camelCaseToSpacedSentenceCase(str);警告(Str)函数camelCaseToSpacedSentenceCase(str) { var spacedCamel = str.replace(/\W+/g,“”).replace(/(A\d)(A)/g,"$1 $2");spacedCamel = spacedCamel.toLowerCase();spacedCamel = spacedCamel.substring(0,1).toUpperCase() + spacedCamel.substring(1,spacedCamel.length)返回spacedCamel;}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-05 09:55:40

最后一个版本:

代码语言:javascript
复制
"thisIsNotAPain"
    .replace(/^[a-z]|[A-Z]/g, function(v, i) {
        return i === 0 ? v.toUpperCase() : " " + v.toLowerCase();
    });  // "This is not a pain"

旧的解决办法:

代码语言:javascript
复制
"thisIsAPain"
    .match(/^(?:[^A-Z]+)|[A-Z](?:[^A-Z]*)+/g)
    .join(" ")
    .toLowerCase()
    .replace(/^[a-z]/, function(v) {
        return v.toUpperCase();
    });  // "This is a pain"

代码语言:javascript
复制
console.log(
    "thisIsNotAPain"
        .replace(/^[a-z]|[A-Z]/g, function(v, i) {
            return i === 0 ? v.toUpperCase() : " " + v.toLowerCase();
        })  // "This is not a pain" 
);

console.log(
    "thisIsAPain"
        .match(/^(?:[^A-Z]+)|[A-Z](?:[^A-Z]*)+/g)
        .join(" ")
        .toLowerCase()
        .replace(/^[a-z]/, function(v) {
            return v.toUpperCase();
        })  // "This is a pain"
);

票数 18
EN

Stack Overflow用户

发布于 2012-12-05 10:01:49

将函数的第一行更改为

代码语言:javascript
复制
var spacedCamel = str.replace(/([A-Z])/g, " $1");
票数 3
EN

Stack Overflow用户

发布于 2012-12-05 10:14:14

这方面的算法如下:

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

Javascript代码:

代码语言: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);
}

请参阅此链接

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13720256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档