首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Javascript中将字符串转换为Pascal情况(又名UpperCamelCase)

在Javascript中将字符串转换为Pascal情况(又名UpperCamelCase)
EN

Stack Overflow用户
提问于 2010-11-01 11:46:23
回答 5查看 63.3K关注 0票数 38

我想知道如何在javascript (&最有可能是regex)中将字符串转换为pascal案例字符串。

转换实例:

  • 双桶
  • 双桶
  • 双桶
  • 双桶=双桶

查看此链接以获得更多关于Pascal案件的信息

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-01 11:49:12

代码语言:javascript
运行
复制
s = s.replace(/(\w)(\w*)/g,
        function(g0,g1,g2){return g1.toUpperCase() + g2.toLowerCase();});

regex查找单词(这里使用\w定义--字母数字和下划线),并将它们分为两个组--第一个字母和单词的其余部分。然后,它使用一个函数作为回调来设置适当的大小写。

示例:http://jsbin.com/uvase

或者,这也会起作用-更少的正则表达式和更多的字符串操作:

代码语言:javascript
运行
复制
s = s.replace(/\w+/g,
        function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase();});

我应该补充一点,这根本不是pascal的情况,因为您有单词障碍(helloworld vs hello-world)。没有它们,这个问题几乎是无法解决的,即使用字典也是如此。这通常被称为标题案例,尽管它不处理诸如"FBI“、"the”或"McDonalds“之类的词。

票数 55
EN

Stack Overflow用户

发布于 2018-12-28 02:07:50

,这是我的建议:

代码语言:javascript
运行
复制
function toPascalCase(string) {
  return `${string}`
    .toLowerCase()
    .replace(new RegExp(/[-_]+/, 'g'), ' ')
    .replace(new RegExp(/[^\w\s]/, 'g'), '')
    .replace(
      new RegExp(/\s+(.)(\w*)/, 'g'),
      ($1, $2, $3) => `${$2.toUpperCase() + $3}`
    )
    .replace(new RegExp(/\w/), s => s.toUpperCase());
}

代码语言:javascript
运行
复制
String.prototype.toPascalCase = function() {
  return this
    .toLowerCase()
    .replace(new RegExp(/[-_]+/, 'g'), ' ')
    .replace(new RegExp(/[^\w\s]/, 'g'), '')
    .replace(
      new RegExp(/\s+(.)(\w*)/, 'g'),
      ($1, $2, $3) => `${$2.toUpperCase() + $3}`
    )
    .replace(new RegExp(/\w/), s => s.toUpperCase());
};

测试用例:

代码语言:javascript
运行
复制
describe('String to pascal case', function() {
  it('should return a pascal cased string', function() {
    chai.assert.equal(toPascalCase('foo bar'), 'FooBar');
    chai.assert.equal(toPascalCase('Foo Bar'), 'FooBar');
    chai.assert.equal(toPascalCase('fooBar'), 'FooBar');
    chai.assert.equal(toPascalCase('FooBar'), 'FooBar');
    chai.assert.equal(toPascalCase('--foo-bar--'), 'FooBar');
    chai.assert.equal(toPascalCase('__FOO_BAR__'), 'FooBar');
    chai.assert.equal(toPascalCase('!--foo-¿?-bar--121-**%'), 'FooBar121');
    chai.assert.equal(toPascalCase('Here i am'), 'HereIAm');
    chai.assert.equal(toPascalCase('FOO BAR'), 'FooBar');
  });
});
票数 34
EN

Stack Overflow用户

发布于 2019-11-19 20:08:22

万一破折号,空格和其他是字符串分隔符,可以使用房客

例如:

代码语言:javascript
运行
复制
_.upperFirst(_.camelCase('double-barrel')); // => DoubleBarrel
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4068573

复制
相关文章

相似问题

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