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

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

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


繁星淼淼
浏览 153回答 3
3回答

蝴蝶刀刀

我相信有人可以提供更简洁的答案,但模式匹配是要走的路。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}

qq_花开花谢_0

考虑到“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));        }      }输出TrueFalse

Qyouu

我会鼓励使用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);    }
打开App,查看更多内容
随时随地看视频慕课网APP