检查用户输入的输入字符串是否采用IIPIII之类的格式,其中I是整数,可以用任何一位数字代替I,并且P是字符。 例如,如果输入为32P125,则它是有效字符串,否则N23P33无效。
我尝试使用string.Length
或string.IndexOf("P")
,但是如何验证其他整数值?
答案 0 :(得分:2)
我确定有人可以提供更简洁的答案,但是模式匹配是解决之道。
using System.Text.RegularExpressions;
string test = "32P125";
// 2 integers followed by any upper cased letter, followed by 3 integers.
Regex regex = new Regex(@"\d{2}[A-Z]\d{3}", RegexOptions.ECMAScript);
Match match = regex.Match(test);
if (match.Success)
{
//// Valid string
}
else
{
//// Invalid string
}
答案 1 :(得分:1)
考虑到'P'必须字面上匹配-
using System;
using System.Text.RegularExpressions;
public class Program
{
public static void Main()
{
string st1 = "32P125";
string st2 = "N23P33";
Regex rg = new Regex(@"\d{2}P\d{3}");
// If 'P' is not to be matched literally, reeplace above line with below one
// Regex rg = new Regex(@"\d{2}[A-Za-z]\d{3}");
Console.WriteLine(rg.IsMatch(st1));
Console.WriteLine(rg.IsMatch(st2));
}
}
输出
True
False
答案 2 :(得分:0)
它可以封装在一个简单的CODE NAME
123 Branan
中:
if
答案 3 :(得分:0)
我鼓励使用MaskedTextProvided
而不是Regex
。
这不仅看起来更干净,而且也不太容易出错。
示例代码如下:
string Num = "12P123";
MaskedTextProvider prov = new MaskedTextProvider("##P###");
prov.Set(Num);
var isValid = prov.MaskFull;
if(isValid){
string result = prov.ToDisplayString();
Console.WriteLine(result);
}
答案 4 :(得分:-2)
对此类内容使用简单的Regular expression。