2012-06-25 230 views
4

如何檢查字符串是否包含以下字符「-A」後跟一個數字?c# - 檢查字符串是否包含字符和數字

例如:thisIsaString-A21 = YES,包含 「-A」 後跟一個數字

例如:thisIsaNotherString-AB21 =沒有,不包含 「-A」 後跟一個數字

+4

你有什麼試過?既然你已經知道它被稱爲正則表達式,找到答案應該不到一分鐘。 – gdoron

+1

'thisIsaString-A21B別的東西'可以嗎? –

回答

15

它可以可以用正則表達式來完成:

if (Regex.IsMatch(s, @"-A\d")) { ... } 

\d任何數字相匹配。

看到它聯機工作:ideone

+1

...除了'\ d'只會匹配一個數字,而給出的例子是'-A21',所以推測OP需要兩個數字 –

+1

@AndrasZoltan:如果你想提取數字,這是一個相關的問題你的答案),但如果你只是想測試是否有匹配,那麼它就沒有關係。 –

+0

@MarkByers的確是 - 一個公平點:) –

4
if(Regex.IsMatch("thisIsaString-A21", "-A\\d+")) 
{ 
    //code to execute 
} 

如果你真的想提取-A [NUM]位,那麼你可以這樣做:

var m = Regex.Match("thisIsaString-A21", "-A\\d+")); 
if(m.Success) 
{ 
    Console.WriteLine(m.Groups[0].Value); 
    //prints '-A21' 
} 

還有其他事情可以做 - 例如,如果您需要自行提取A [num]位或僅提取數字:

var m = Regex.Match("thisIsaString-A21", "(?<=-A)\\d+"); 
//now m.Groups[0].Value contains just '21' 

或在我的第一個建議,如果你想「A21」:

var m = Regex.Match("thisIsaString-A21", "(?<=-)A\\d+"); 
//now m.Groups[0].Value contains 'A21' 

還有其他的方法來實現這些最後兩個 - 我喜歡的非捕獲組(?<=)因爲,顧名思義,它使輸出組清潔。

+0

+1爲了顯示如何提取數字,儘管我猜在這種情況下OP只需要「是」或「否」。 ;-) –

+0

我想你可能是對的 - 謝謝! –

相關問題