为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
繁星淼淼 2022-01-09 17:41:35
检查用户输入的字符串是否为 IIPIII 格式,其中 I 为整数,任何一位数都可以代替 I,P 为字符。例如,如果输入为 32P125,则它是有效字符串,否则 N23P33 无效。我尝试使用string.Lengthorstring.IndexOf("P")但如何验证其他整数值?
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

我相信有人可以提供更简洁的答案,但模式匹配是要走的路。


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

}


查看完整回答
反对 回复 2022-01-09
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

考虑到“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


查看完整回答
反对 回复 2022-01-09
?
Qyouu

TA贡献1786条经验 获得超11个赞

我会鼓励使用MaskedTextProvidedover 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);

    }


查看完整回答
反对 回复 2022-01-09
  • 3 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信