最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Split a camelCase string with regex - Stack Overflow

programmeradmin11浏览0评论

I have a Camel case string like this s = 'ThisIsASampleString' and I want to split into an array using the capital letters as the delimiting point. I am expecting this:

['This', 'Is', 'A', 'Sample', 'String']

Here is what I have done so far

s = "ThisIsASampleString";
var regex = new RegExp('[A-Z]',"g");
var arr = s.split(re);

But this is not giving me the correct result because it removes the matched character. I am getting this array as my result ["his", "s", "", "tring"]. It has removed all the matched capital letters.

How should I avoid this behavior and keep the matched characters also in my result array?

I have a Camel case string like this s = 'ThisIsASampleString' and I want to split into an array using the capital letters as the delimiting point. I am expecting this:

['This', 'Is', 'A', 'Sample', 'String']

Here is what I have done so far

s = "ThisIsASampleString";
var regex = new RegExp('[A-Z]',"g");
var arr = s.split(re);

But this is not giving me the correct result because it removes the matched character. I am getting this array as my result ["his", "s", "", "tring"]. It has removed all the matched capital letters.

How should I avoid this behavior and keep the matched characters also in my result array?

Share Improve this question edited Dec 17, 2016 at 18:47 user663031 asked Dec 17, 2016 at 7:11 EzioEzio 2,9852 gold badges31 silver badges50 bronze badges 2
  • This is not camel-casing. A camel-cased string would start with a lower-case letter. This is sometimes called "Pascal-casing". – user663031 Commented Dec 17, 2016 at 18:49
  • Noted @torazaburo – Ezio Commented Dec 19, 2016 at 6:29
Add a ment  | 

1 Answer 1

Reset to default 9

Your regex would split based on the uppercase but the result array doesn't include the matched value. Instead use positive look-ahead assertion to assert the position.

s = "ThisIsASampleString";
var arr = s.split(/(?=[A-Z])/);

console.log(arr);

Regex explanation here


Or you can use String#match method instead.

s = "ThisIsASampleString";
var arr = s.match(/[A-Z][^A-Z]*/g);

console.log(arr);

Regex explanation here

发布评论

评论列表(0)

  1. 暂无评论