簡體   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)

如何使用正則表達式:

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

這是我一直使用的一些靈活的代碼:

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

一旦解析了可能的數字(通過正則表達式,拆分,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()是異常安全的,這使得它對於許多類型的轉換而言都更快,更干凈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM