Convert string to Pascal Case (aka UpperCamelCase) in Javascript

前端 未结 3 1186
清歌不尽
清歌不尽 2020-12-10 01:13

Id like to know how I can covert a string into a pascal case string in javascript (& most probally regex).

Conversion Examples:

  • double-barrel = Dou
3条回答
  •  再見小時候
    2020-12-10 01:26

    Here's my suggestion:

    function toPascalCase(string) {
      return `${string}`
        .replace(new RegExp(/[-_]+/, 'g'), ' ')
        .replace(new RegExp(/[^\w\s]/, 'g'), '')
        .replace(
          new RegExp(/\s+(.)(\w+)/, 'g'),
          ($1, $2, $3) => `${$2.toUpperCase() + $3.toLowerCase()}`
        )
        .replace(new RegExp(/\s/, 'g'), '')
        .replace(new RegExp(/\w/), s => s.toUpperCase());
    }
    

    or

    String.prototype.toPascalCase = function() {
      return this
        .replace(new RegExp(/[-_]+/, 'g'), ' ')
        .replace(new RegExp(/[^\w\s]/, 'g'), '')
        .replace(
          new RegExp(/\s+(.)(\w+)/, 'g'),
          ($1, $2, $3) => `${$2.toUpperCase() + $3.toLowerCase()}`
        )
        .replace(new RegExp(/\s/, 'g'), '')
        .replace(new RegExp(/\w/), s => s.toUpperCase());
    };
    

    Test cases:

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

提交回复
热议问题