2016-12-17 71 views
4

我有一个像这样的驼峰大小写字符串s = 'ThisIsASampleString',我想用大写字母作为分隔点分割成一个数组。我期待这样的:用正则表达式分割一个camelCase字符串

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

这是我迄今

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

完成,但是这不是给我正确的结果,因为它消除了匹配的字符。我得到这个数组作为我的结果["his", "s", "", "tring"]。它已删除所有匹配的大写字母。

我应该如何避免这种行为并将匹配的字符也保存在我的结果数组中?

+0

这不是骆驼套管。骆驼式的字符串将以小写字母开头。这有时被称为“Pascal-casing”。 – 2016-12-17 18:49:16

+0

注意@torazaburo – Ezio

回答

6

您的正则表达式将基于大写拆分,但结果数组不包含匹配的值。而是使用positive look-ahead assertion来表明立场。

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

 
console.log(arr);

Regex explanation here


或者你可以使用String#match方法来代替。

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

 
console.log(arr);

Regex explanation here

+0

尽管我有一个问题,为什么会发生这种情况,为什么这些大写字母在匹配时被删除? – Ezio

+0

@Ezio:根据匹配的分隔符将字符串拆分....检查MDN文档可以帮助您:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String /分裂 –

相关问题