2016-03-15 100 views
1

逗號分隔。如果我有一個很長的字符串快速從字符串的子串僅

8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42

,我可以通過循環獲得的

8718584449,10218828289,8914098889,8720551129

指標,我怎麼會得到子串

19630000,24,990
84000 0,3,18
2120000,4,108
3690000,18,42

從長字符串?

基本上,如果我知道第4個數字子串的第一個數字,那麼對於每4個數字如何動態獲取第2,3,4個數字?例如,如果我沒有10218828289,那麼我不想獲得840000,3,18

+0

我真的不知道你的意思是「我能得到的指標」?你能詳細說明一下嗎? – Willwsharp

+0

@Willwsharp我的意思是我確切地知道那些位於字符串中的數字,所以我需要在每個長整數之後得到以下子字符串 –

+0

我仍然不確定我的理解。那麼你知道你列出的那些長號碼的索引,並且你想在每次之後得到接下來的兩個數字?如果這種情況看起來很奇怪,那麼可能有更好的方法來實現你想要完成的任務。 – Willwsharp

回答

4

您可以使用String.split,Array.sliceArray.join來避免正則表達式。

var s = '8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42'; 
s.split(',').slice(1, 4).join(','); // => '19630000,24,990' 
s.split(',').slice(5, 8).join(','); // => '840000,3,18' 
s.split(',').slice(9, 12).join(','); // => '19630000,24,990' 
s.split(',').slice(13, 16).join(','); // => '840000,3,18' 

如果出於某種原因,你想用正則表達式:

var s = '8718584449,19630000,24,990,10218828289,840000,3,18,8914098889,2120000,4,108,8720551129,3690000,18,42'; 
s.match(/\d+,((?:\d+,){2}(?:\d+))/g); // => ['19630000,24,990', …] 

Try it with RegEx101.

+0

你可以把第一個解決方案放在一個循環中。 – destoryer

+0

對於每4個數字,當我知道第一個數字時,如何動態獲得第二,第三和第四個數字?只有當我有第一個號碼時,我才需要這些號碼。在你的例子中,它看起來像獲得了所有可能的場景,而且它不是動態的 –

+1

@KananFarzali我不確定我是否理解。如果你想搜索「在特定數字後面的三個數字」,你可以用這個數字替換第一個'\ d +':'new RegExp(x +',((?:\\ d +,){2}( ?:\\ d +))','g')'。那是你想要做什麼? – thomasd