如何分割數字和子字符串的字符串?如何分割數字和它的子字符串的字符串?
輸入: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