我有一个字符串,其中包含数字和其他字符,例如:123\n456? * ,, ;;; '' 333\n789/\\+-
,我试图只将数字作为数组获取
123
456
333
789
我尝试过像
这样的东西serials = Regex.Replace(serials, @"\r\n?|\n|\t", " ");
var serialNumbers = Regex.Split(serials, @"(?<!($|[^\\])(\\\\)*?\\);");
但我的数组有类似
的内容123 456? * ,,
empty
empty
'' 333 789/\\+-
有没有办法正确拆分这个字符串?
答案 0 :(得分:6)
尝试匹配,而不是拆分(即从字符串中提取数字):
string[] numbers = Regex
.Matches(source, "[0-9]+")
.OfType<Match>()
.Select(match => match.Value)
.ToArray();
如果你坚持分裂,可以
string[] numbers = Regex
.Split(source, "[^0-9]+");
更紧凑,但可能不太可读。
答案 1 :(得分:0)
您可以尝试以下内容:
int[] numbers = Regex.Split(input, @"\D+")
.Where(x => int.TryParse(x, out _))
.Select(int.Parse)
.ToArray();
如果你想要它们像字符串一样,只需删除(int.Parse)行。 它的工作方式如下: 按字符串拆分字符串,然后尝试解析集合中的每个字符串,如果可能只是将字符串放入集合中,(out _是C#7功能,您可以在此处阅读更多内容 - &gt; {{3然后,如果你需要,你可以将每个字符串解析为数字和&#34;实现&#34;他们进入阵列你可以在这里查看 - &gt; Discards