对于循环检查,如果字符串只有3个大写字母后跟4个数字

时间:2015-01-26 14:38:18

标签: c# for-loop

我输入的字符串必须以三个大写字母开头,以四位数字结尾(如此:“SJL1036”)程序只是检查我的输入是否遵循该模型。

如果我要输入“Sjl1036”og“SJL103”,它会输出它是一个错误的陈述。

4 个答案:

答案 0 :(得分:6)

试试这个正则表达式。 3个大写,4个数字。

^[A-Z]{3}[0-9]{4}$

例如:

var value = "FSK2526";
if (Regex.IsMatch(value, @"^[A-Z]{3}[0-9]{4}$")) {
   // it matches
}

答案 1 :(得分:4)

如果这是要求:

  

一个必须以三个大写字母开头并以。结尾的字符串   四位数

最有效的方法可能是使用string method s:

bool valid = input.Length >= 7 
    && input.Remove(3).All(Char.IsUpper) // or input.Substring(0, 3)
    && input.Substring(input.Length - 4).All(Char.IsDigit);

如果实际要求为" 3个大写字母后跟4个数字"(所以7个字符),您只需将input.Length >= 7更改为input.Length == 7

答案 2 :(得分:4)

虽然你可以用for循环来做,但你可以用正则表达式进一步简化它:

Regex regex = new Regex(@"^[A-Z]{3}.*[0-9]{4}$");
Match match = regex.Match("SJL1036");
if (match.Success)
{
    Console.WriteLine(match.Value);
}

答案 3 :(得分:3)

非正则表达式选项,您可以使用一些LINQ,如:

string str = "SJL1036";
if (str.Length == 7 &&
    str.Take(3).All(char.IsUpper)
    && str.Skip(3).All(char.IsDigit))
{
    Console.WriteLine("valid");
}
else
{
    Console.WriteLine("invalid");
}