2011-02-26 94 views

回答

6
using System.Globalization; 
bool valid = int.TryParse(inputString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result); 

適用於不帶前綴的十六進制數。如果您不知道唯一的數字類型,您可以使用

bool isHex = inputString.Length > 2 && 
    inputString.Substring(0, 2).ToLowerInvariant() == "0x" && 
    int.TryParse(inputString.Substring(2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result); 

檢查並解析字符串在同一時間。對於二進制我會使用

Regex.IsMatch(inputString, "^[01]+$"); 

您應該使用inputString = inputString.Trim()使應用程序就「非標準輸入」更加寬容。

0

嘗試

Regex.IsMatch("0x6868FC", "\b0x[a-fA-F0-9]+\b"); 

如果你希望用戶輸入以0x開始的十六進制數。

+0

或者你可以說0x部分是可選的(?:0x)? – bottlenecked 2011-02-26 13:32:06

3

您可以使用下面的代碼:

int dummy; 
bool isHex = int.TryParse(str, 
          NumberStyles.HexNumber, 
          CultureInfo.InvariantCulture, 
          out dummy); 

對於二元,有沒有內置的功能,但你可以使用類似以下內容:

static bool isbin(string s) 
{ 
    foreach (var c in s) 
     if (c != '0' && c != '1') 
      return false; 
    return true; 
} 
相關問題