2013-05-05 115 views
0

我需要驗證有效的代碼名稱。C#4.0函數檢查字符串中的前四個字符

String test = "C000. ", "C010. ", "C020. ", "C030. ", "CA00. ","C0B0. ","C00C. " 

所以我的功能需要驗證以下條件:

所以,就像我下面的字符串可以有值

  1. 它應與C
  2. 啓動接下來的三個字符後應在數字之前爲.
  3. 休息它可以是任何東西。

所以在上面的字符串值中,只有["C000.", "C010.", "C020.", "C030."]是有效的。

編輯:

下面是我試過的代碼:

if (nameObject.Title.StartsWith(String.Format("^[C][0-9]{3}$",nameObject.Title))) 
+4

這聽起來對於一個正則表達式來說是適當的......你試過了什麼,它是怎麼回事? – 2013-05-05 07:17:46

+0

你有意避免使用正則表達式嗎? – 2013-05-05 07:18:40

+0

即使你避開正則表達式,你可以通過索引器參數像數組一樣訪問字符,並從那裏評估 – smartcaveman 2013-05-05 07:19:48

回答

2

我建議正則表達式,例如(註銷我的頭頂,可能需要工作):

string s = "C030."; 
Regex reg = new Regex("C[0-9]{3,3}\\."); 
bool isMatch = reg.IsMatch(s); 
+1

你可以將RegEx縮短爲'「^ C \ d {3} \ .. *」'(關閉頂部我的頭)。這應該(理想情況下)匹配一個C後跟3個數字和一個字符串開始的時間段。 – Tim 2013-05-05 07:24:51

+0

@Tim,我需要檢查上述條件,而不是從字符串 – 2013-05-05 07:27:30

+0

@ManojSingh開始 - 「^」將RegEx錨定到您使用RegEx對應的字​​符串的起始位置,而不是表達式的起始位置。根據你的問題(**第一個**字符串的四個字符),你應該使用'^'。 – Tim 2013-05-05 07:35:46

0

此正則表達式應該做的伎倆:

Regex.IsMatch(input, @"C[0-9]{3}\..*") 
0

查看http://www.techotopia.com/index.php/Working_with_Strings_in_C_Sharp 關於(除其他之外)字符串元素的單獨訪問的快速教程,以便您可以測試每個元素的標準。 如果您認爲自己的標準可能會發生變化,那麼使用正則表達式可以提供最大的靈活性(但比常規字符串元素評估運行時間更多)。在你的情況下,它可能是矯枉過正,恕我直言。

相關問題