如何从下面的字符串中选择所有数字?str = "1,2, 4,5 ,6 7 8 9 10, 11, 13"我尝试使用split(','),但它不适用于空格。因为它也包含空格。
str = "1,2, 4,5 ,6 7 8 9 10, 11, 13"
r6hnlfcb1#
只要做一个正则表达式,在数字上进行匹配
console.log("1,2, 4,5 ,6 7 8 9 10, 11, 13".match(/\d+/g).map(Number));
wlp8pajw2#
splitcan take a regular expression。所以你可以给予它一个正则表达式,它可以健壮地定义你的定界语法。(...这可能是类似的,但对于阅读这个问题的其他人来说略有不同,这就是为什么我提供这个答案。)我猜想你实际上会希望允许最多1个逗号,前后有可选的空格,或1个或更多的空格。但例如,我猜想你不会将两个或更多的逗号解释为单个分隔符,而更可能是输入文本中的错误。例如,可能需要将1,,2解释为[1, 0, 2]。(毕竟,在JavaScript中,Number("")是0)。这完全取决于你自己选择的语法。这样的正则表达式可以是:(?:\s*,\s*)|\s+这里发生了很多事情:
split
1,,2
[1, 0, 2]
Number("")
0
(?:\s*,\s*)|\s+
?:
|
\s*,\s*
\s+
3.14
-1
1.21e9
0x42
Infinity
console.log("1,2, 4,5 ,6 7 8 9 10, 11, 13".split(/(?:\s*,\s*)|\s+/).map(Number));
如果您确实希望,,是单个分隔符,则正则表达式可以仅为[,\s]+
,,
[,\s]+
wljmcqd83#
不使用正则表达式:
string str = "1,2, 4,5 ,6 7 8 9 10, 11, 13"; List<string> list = str.Replace(" ", ",").Split(',').ToList(); list.RemoveAll(x => x == string.Empty);
列表包含:1,2,4,5,6,7,8,9,10,11,13
vsnjm48y4#
你能做的.replace(/\D/g,'');
4条答案
按热度按时间r6hnlfcb1#
只要做一个正则表达式,在数字上进行匹配
wlp8pajw2#
split
can take a regular expression。所以你可以给予它一个正则表达式,它可以健壮地定义你的定界语法。(...这可能是类似的,但对于阅读这个问题的其他人来说略有不同,这就是为什么我提供这个答案。)我猜想你实际上会希望允许最多1个逗号,前后有可选的空格,或1个或更多的空格。但例如,我猜想你不会将两个或更多的逗号解释为单个分隔符,而更可能是输入文本中的错误。例如,可能需要将
1,,2
解释为[1, 0, 2]
。(毕竟,在JavaScript中,Number("")
是0
)。这完全取决于你自己选择的语法。这样的正则表达式可以是:
(?:\s*,\s*)|\s+
这里发生了很多事情:
?:
非捕获组。|
)结构中,\s*,\s*
必须出现在\s+
之前,因为它需要被贪婪地匹配以形成更长的分隔符(如果有分隔符,则在分隔符中包括逗号,而不仅仅是它之前的空格)。3.14
,-1
,1.21e9
,0x42
,Infinity
等数字。如果您确实希望
,,
是单个分隔符,则正则表达式可以仅为[,\s]+
wljmcqd83#
不使用正则表达式:
列表包含:1,2,4,5,6,7,8,9,10,11,13
vsnjm48y4#
你能做的
.replace(/\D/g,'');