C# 如何拆分数字上的字符串及其子字符串?

C# 如何拆分数字上的字符串及其子字符串?,c#,regex,string,split,C#,Regex,String,Split,如何拆分数字和子字符串上的字符串 输入:34AG34A 预期输出:{“34”、“AG”、“34”、“A”} 我试过使用Regex.Split()函数,但我不知道哪种模式有效 有什么想法吗?首先,你要的是“数字”,但没有具体说明你的意思 如果您的意思是“0-9中的数字”,则需要字符类[0-9]。除0-9之外,还有与其他一些字符匹配的 \d匹配任何十进制数字。它相当于\p{Nd}正则表达式模式,其中包括标准十进制数字0-9以及许多其他字符集的十进制数字 我假设您对负数、包含小数点的数字、外来数字(例

如何拆分数字和子字符串上的字符串

输入:
34AG34A

预期输出:
{“34”、“AG”、“34”、“A”}

我试过使用
Regex.Split()
函数,但我不知道哪种模式有效

有什么想法吗?

首先,你要的是“数字”,但没有具体说明你的意思

如果您的意思是“0-9中的数字”,则需要字符类
[0-9]
。除0-9之外,还有与其他一些字符匹配的

\d匹配任何十进制数字。它相当于\p{Nd}正则表达式模式,其中包括标准十进制数字0-9以及许多其他字符集的十进制数字

我假设您对负数、包含小数点的数字、外来数字(例如)不感兴趣五, 等等

拆分在这里不是正确的解决方案。您似乎想做的是标记字符串,而不是拆分它。您可以使用
匹配项
而不是
拆分

string[] output = Regex.Matches(s, "[0-9]+|[^0-9]+")
    .Cast<Match>()
    .Select(match => match.Value)
    .ToArray();
string[]output=Regex.Matches(“[0-9]+|[^0-9]+”)
.Cast()
.Select(匹配=>match.Value)
.ToArray();

正则表达式
(\d+|[A-Za-z]+)
将返回您需要的组。

我认为您必须寻找两种模式:

  • 数字序列
  • 一系列字母
因此,我会使用
([a-z]+)|([0-9]+)


例如,
System.Text.RegularExpressions.Regex.Matches(“asdf1234be56qq78”),“([a-z]+)|([0-9]+)”)”
返回6个组,其中包含“asdf”、“1234”、“be”、“56”、“qq”、“78”。

不要使用Regex.Split,使用Regex.Match:

var m = Regex.Match("34AG34A", "([0-9]+|[A-Z]+)");
while (m.Success) {
    Console.WriteLine(m);
    m = m.NextMatch();
}
将其转换为数组留给读者作为练习。:-)

你说的“数字和子字符串”是什么意思。你说的子字符串是什么意思?子字符串中可能出现哪些字符?