简体   繁体   English

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

[英]the easiest way to get number from string

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

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

只要您确定里面会有一个数字

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

How about using a regex: 如何使用正则表达式:

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

Here's some flexible code I use all the time for this sort of thing: 这是我一直使用的一些灵活的代码:

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;
}

Then you can just call: 然后,您可以致电:

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

It could also be turned into a handy extension method, then you could do: 也可以将其转换为方便的扩展方法,然后可以执行以下操作:

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

Once you've parsed out your potential number (through regex, split, substr, etc), TryParse is a great improvement (since .NET 3.5 at least): 一旦解析了可能的数字(通过正则表达式,拆分,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() is exception safe, which makes it a bit faster and cleaner for many types of conversions. TryParse()是异常安全的,这使得它对于许多类型的转换而言都更快,更干净。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM