从字符串中获取数字的最简单方法

时间:2011-04-13 20:42:28

标签: c#

我想从字符串中检索一些数字,例如“valueID = 234232”或“valueID = 2”或“valueID = 23”或“valueID = 2”或“valueID = 234”,那么最简单的方法是什么得到这个数字假设在这个数字后面是空格“”或行尾?

5 个答案:

答案 0 :(得分:8)

string input = "valueID = 234232";
var split = input.Split(new char[] {'='});
int value = int.Parse(split[1].Trim());

答案 1 :(得分:1)

只要你确定那里会有一个号码

int.parse( Regex.match(String, @"\d+").value)

答案 2 :(得分:1)

如何使用正则表达式:

  Match match = Regex.Match(input, @"\d+");
  if (match.Success) 
  {
     number = int.Parse(match.Value);
  }

答案 3 :(得分:0)

以下是我一直用于此类事情的一些灵活代码:

public const string FilterDigits = "0123456789";
public const string FilterLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

/// <summary>
/// Strips away any characters not defined in validChars and returns the result.
/// </summary>
public static string FilterTo(string text, string validChars)
{
StringBuilder Result = new StringBuilder();

for (int i = 1; i <= text.Length; i++) {
    char CurrentChar = Convert.ToChar(Strings.Mid(text, i, 1));

    if (validChars.Contains(CurrentChar)) {
        Result.Append(CurrentChar);
    }
}

return Result.ToString;
}

然后你可以打电话:

 int.parse(FilterTo("valueID=23", FilterDigits));

它也可以变成一个方便的扩展方法,然后你可以这样做:

 int.parse("valueID=23".FilterTo(FilterDigits));

答案 4 :(得分:0)

一旦你解析了你的潜在数字(通过regex,split,substr等),TryParse就是一个很大的改进(至少从.NET 3.5开始):

string myPotentialNumber = "1";
int myNumber;
bool isNumber = int.TryParse(myPotentialNumber, out myNumber);

if( isNumber )
{
   //do something
}
else
{
   //throw error
}

TryParse()是异常安全的,这使得它对于许多类型的转换更快更干净。

相关问题