使用C#斯普利特数字部分由字母和数字组成(Split numeric part from alpha

2019-10-18 18:05发布

我有字母数字字符串列表。 例如:

1A
2B
7K
10A

我想只有数字部分,然后对它们进行比较,如果是低于10我不必将其添加到另一个列表。 我想知道的正则表达式来拆分数字部分从字符串什么。 任何帮助。 我所做的到现在是:

 if (x == y) // also handles null
            return 0;
        if (x == null)
            return -1;
        if (y == null)
            return +1;

        int ix = 0;
        int iy = 0;
        while (ix < x.Length && iy < y.Length)
        {
            if (Char.IsDigit(x[ix]) && Char.IsDigit(y[iy]))
            {
                // We found numbers, so grab both numbers
                int ix1 = ix++;
                int iy1 = iy++;
                while (ix < x.Length && Char.IsDigit(x[ix]))
                    ix++;
                while (iy < y.Length && Char.IsDigit(y[iy]))
                    iy++;
                string numberFromX = x.Substring(ix1, ix - ix1);
                string numberFromY = y.Substring(iy1, iy - iy1);

                // Pad them with 0's to have the same length
                int maxLength = Math.Max(
                    numberFromX.Length,
                    numberFromY.Length);
                numberFromX = numberFromX.PadLeft(maxLength, '0');
                numberFromY = numberFromY.PadLeft(maxLength, '0');

                int comparison = _CultureInfo
                    .CompareInfo.Compare(numberFromX, numberFromY);
                if (comparison != 0)
                    return comparison;
            }
            else
            {
                int comparison = _CultureInfo
                    .CompareInfo.Compare(x, ix, 1, y, iy, 1);
                if (comparison != 0)
                    return comparison;
                ix++;
                iy++;
            }
        }

但我不希望在我的方法非常复杂。 所以我需要一个正则表达式来拆分。

Answer 1:

尝试焦炭的ISDIGIT方法

var number = int.Parse(new string(someString.Where(char.IsDigit).ToArray()));
if(number<10)
{
   someList.Add(number);
}

使用AllIsDigit您可以采取的字符串只有数字部分,然后分析它为int和比较:)有没有必要使用的正则表达式



Answer 2:

您可以使用下面的代码,以分割输入字符串,并得到数组和阿尔法小组的结果。 如果一组是不存在的,其结果将是空字符串。

string input = "10AAA";
Match m = Regex.Match(input, @"(\d*)(\D*)");

string number = m.Groups[1].Value;
string alpha = m.Groups[2].Value;


Answer 3:

你可以用这一个尝试:

  string txt="10A";
  string re1="(\\d+)";  // Integer Number 1

  Regex r = new Regex(re1);
  Match m = r.Match(txt);


Answer 4:

你们是不是要做到这一点?

int num;
string stringWithNumbers = "10a";
if (int.TryParse(Regex.Replace(stringWithNumbers, @"[^\d]", ""), out num))
{
    //The number is stored in the "num" variable, which would be 10 in this case.
    if (num >= 10)
    {
        //Do something
    }

}
else
{
    //Nothing numeric i the string
}


文章来源: Split numeric part from alphanumeric string using C#