2016-12-17 69 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 /分裂 –

相關問題