比较输入字符串的格式是否正确

时间:2018-09-10 10:23:17

标签: c#

检查用户输入的输入字符串是否采用IIPIII之类的格式,其中I是整数,可以用任何一位数字代替I,并且P是字符。 例如,如果输入为32P125,则它是有效字符串,否则N23P33无效。

我尝试使用string.Lengthstring.IndexOf("P"),但是如何验证其他整数值?

5 个答案:

答案 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