2016-03-15 102 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