2013-05-05 117 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 关于(除其他之外)字符串元素的单独访问的快速教程,以便您可以测试每个元素的标准。 如果您认为自己的标准可能会发生变化,那么使用正则表达式可以提供最大的灵活性(但比常规字符串元素评估运行时间更多)。在你的情况下,它可能是矫枉过正,恕我直言。

相关问题