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?
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With