如何使用Regex将字符串拆分为数字和字母

时间:2010-04-15 14:04:19

标签: c# regex

我想将像“001A”这样的字符串拆分为“001”和“A”

6 个答案:

答案 0 :(得分:4)

Match match = Regex.Match(s, @"^(\d+)(.+)$");
string numeral = match.Groups[1].Value;
string tail = match.Groups[2].Value;

答案 1 :(得分:4)

string[] data = Regex.Split("001A", "([A-Z])");
data[0] -> "001"
data[1] -> "A"

答案 2 :(得分:2)

这是Java,但它应该可以翻译成其他版本而几乎没有修改。

    String s = "123XYZ456ABC";
    String[] arr = s.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)");
    System.out.println(Arrays.toString(arr));
    // prints "[123, XYZ, 456, ABC]"

如您所见,这会在\d后跟\D的地方拆分字符串,反之亦然。它使用positive and negative lookarounds来查找要拆分的位置。

答案 3 :(得分:1)

如果您的代码与001A样本一样简单,那么您不应该使用正则表达式而是使用for循环。

答案 4 :(得分:0)

您可以尝试这样的方法从字符串中检索整数:

StringBuilder sb = new StringBuilder();
Regex regex = new Regex(@"\d*");
MatchCollection matches = regex.Matches(inputString);
for(int i=0; i < matches.count;i++){
    sb.Append(matches[i].value + " ");
}

然后更改正则表达式以匹配字符并执行相同的循环。

答案 5 :(得分:0)

如果更像001A002B那么你可以

    var s = "001A002B";
    var matches = Regex.Matches(s, "[0-9]+|[A-Z]+");
    var numbers_and_alphas = new List<string>();
    foreach (Match match in matches)
    {
        numbers_and_alphas.Add(match.Value);
    }