如何分割数字和子字符串的字符串?如何分割数字和它的子字符串的字符串?
输入:34AG34A
预期输出:{"34","AG","34","A"}
我试图与Regex.Split()
功能,但我想不出什么花样会的工作。
任何想法?
如何分割数字和子字符串的字符串?如何分割数字和它的子字符串的字符串?
输入:34AG34A
预期输出:{"34","AG","34","A"}
我试图与Regex.Split()
功能,但我想不出什么花样会的工作。
任何想法?
正则表达式(\d+|[A-Za-z]+)
将返回您需要的群体。
首先,你问“数字”,但没有说明你的意思。
如果您的意思是“0-9中的数字”,那么您需要字符类别[0-9]
。还有character class \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();
我认为你必须寻找两种模式:
因此,我会使用([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();
}
此转换成一个阵列作为练习留给读者。 :-)
你是什么意思的“数字和子字符串”。子串是什么意思?哪些字符可能出现在你的子字符串中? – 2010-09-06 09:31:20