Сначала вы спрашиваете «цифры», но не указываете, что вы подразумеваете под этим.
Если вы имеете в виду «цифры в 0-9», то вам нужен класс символов [0-9]
. Существует также класс символов \d
, который в дополнение к 0-9 соответствует некоторым другим символам.
\ d соответствует любой десятичной цифре. Он эквивалентен шаблону регулярного выражения \ p {Nd}, который включает стандартные десятичные цифры 0-9, а также десятичные цифры ряда других наборов символов.
Я предполагаю, что вас не интересуют отрицательные числа, числа, содержащие десятичную точку, иностранные цифры, такие как 五 и т. Д.
Сплит не является правильным решением здесь. То, что вы хотите сделать, это маркировать строку, а не разбивать ее. Вы можете сделать это, используя Matches
вместо Split
:
string[] output = Regex.Matches(s, "[0-9]+|[^0-9]+")
.Cast<Match>()
.Select(match => match.Value)
.ToArray();