2016-11-27 65 views
0

所以我要檢查字符串是否具有所有這些屬性:檢查字符串具有一定的長度,含有一定的字母

  • 5個字符,並
  • 的第一個字符是一個:
    • O,或
    • S,或
    • J或
    • C,和
  • 最後四個字符是數字。

這是我的代碼:

Console.Write("IDnumber : "); 
IDnumber= Console.ReadLine(); 
IDnumberLength = IDnumber.Length; 
if (MemberNumber.Length == 5 && 
    char.IsLetter(IDnumber[0]) && <-- I know how to validate any letter but not certain letter 
    char.IsDigit(IDnumber[1]) && 
    char.IsDigit(IDnumber[2]) && 
    char.IsDigit(IDnumber[3]) && 
    char.IsDigit(IDnumber[4])) 
+3

聽起來像是正則表達式'[OSJC] [0-9] {4}'將適合。或者,你的代碼加上'new char [] {'O','S','J','C'} .Contains(IDnumber [0])'。 – CodeCaster

+1

只要記住'char.Is'方法也檢查Unicode字符http://www.fileformat.info/info/unicode/category/Nd/list.htm,所以'IDnumber [1]> ='0 '&& IDnumber [1] <='9''可能是首選 – Slai

回答

0

,不使用正規表達式:

Boolean isValid = 
    value.Length == 5 && 
    (value[0] == 'O' || value[0] == 'S' || value[0] == 'J' || value[0] == 'C') && 
    Char.IsDigit(value[1]) && 
    Char.IsDigit(value[2]) && 
    Char.IsDigit(value[3]) && 
    Char.IsDigit(value[4]); 
3

您可以使用Regex這樣的:

var regex = new Regex("^[OSJC][0-9]{4}$"); 

Console.WriteLine(regex.IsMatch("J1234")); 
Console.WriteLine(regex.IsMatch("J124")); 
Console.WriteLine(regex.IsMatch("X1234")); 

這將使你:

 
True 
False 
False 

在你的代碼可以使用這樣的:

Console.Write("IDnumber : "); 
IDnumber = Console.ReadLine(); 
if (Regex.IsMatch(IDnumber, "^[OSJC][0-9]{4}$")) 
{ 
    // Success 
} 
else 
{ 
    // Failed 
} 
+1

我會爲正面和背面添加錨點。這個正則表達式也匹配1O1234x。 –

相關問題