从包含字母和空格的字符串中解析整数的最有效方法是什么?
实施例: 我传递了以下字符串:“RC 272”。我想从字符串中检索272。
我正在使用C#和.NET 2.0框架。
答案 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));