从包含字母和空格的字符串中解析整数 - C#

时间:2009-10-20 17:49:50

标签: .net parsing c#-2.0

从包含字母和空格的字符串中解析整数的最有效方法是什么?

实施例: 我传递了以下字符串:“RC 272”。我想从字符串中检索272。

我正在使用C#和.NET 2.0框架。

6 个答案:

答案 0 :(得分:19)

一个简单的正则表达式可以提取数字,然后你可以解析它:

int.Parse(Regex.Match(yourString, @"\d+").Value, NumberFormatInfo.InvariantInfo);

如果字符串可能包含多个数字,您可以循环使用相同的正则表达式找到的匹配项:

for (Match match = Regex.Match(yourString, @"\d+"); match.Success; match = match.NextMatch()) {
    x = int.Parse(match.Value, NumberFormatInfo.InvariantInfo); // do something with it
}

答案 1 :(得分:9)

由于字符串的格式不会改变KISS

string input = "RC 272";
int result = int.Parse(input.Substring(input.IndexOf(" ")));

答案 2 :(得分:3)

只是为了它的乐趣,另一种可能性:

int value = 0;
foreach (char c in yourString) {
  if ((c >= '0') && (c <= '9')) {
    value = value*10+(c-'0');
  }
}

答案 3 :(得分:2)

如果它始终采用“ABC 123”格式:

string s = "RC 272";
int val = int.Parse(s.Split(' ')[1]); // val is 272

答案 4 :(得分:0)

编辑:

如果它总是采用那种格式,那么就不会像以下那样工作,其中value =“RC 272”?

int someValue = Convert.ToInt32(value.Substring(value.IndexOf(' ') + 1));

答案 5 :(得分:0)

伙计们,因为它总是采用“ABC 123”格式,为什么不跳过IndexOf步骤?

string input = "RC 272";
int result = int.Parse(input.Substring(3));