正则表达式检查c#代码不工作

本文关键字:工作 代码 检查 正则表达式 | 更新日期: 2023-09-27 18:14:15

我试图检查各种帐号是否在我的代码中用逗号分隔。代码如下所示:

System.Diagnostics.Debug.WriteLine(billText);
            string input = billText;
            try
            {
                //System.Diagnostics.Debug.WriteLine(input);
                string[] accountsToBill;
                if (Regex.IsMatch(input, "''d{10}[,]")) 
                {
                    System.Diagnostics.Debug.WriteLine("commas");
                    string[] arr = input.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < arr.Length; i++)
                    {
                        arr[i] = arr[i].Trim();
                    }
                    accountsToBill = arr;
                }
                else if (Regex.IsMatch(input, "''d{10}[''s]"))  
                {
                    System.Diagnostics.Debug.WriteLine("whitespace");
                    input = Regex.Replace(input, @"'s+", " ");
                    string[] arr = input.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < arr.Length; i++)
                    {
                        arr[i] = arr[i].Trim();
                    }
                    accountsToBill = arr;
                }

等等…我检查了输入,它不是null,但由于某种原因,代码没有进入第一个if..我使用的标准输入是用逗号分隔的10位数字

正则表达式检查c#代码不工作

您不应该使用正则表达式进行非常简单的字符串检查。他们有沉重的管理费用。在您提供的情况下,我没有看到RegEx的使用。简单的字符串函数可以用来实现你想要的。

如果哪个字符(逗号或空格)是分隔符并不重要,并且您希望将两者都视为分隔符,那么您可以轻松地用一行替换整个代码:

string[] accountsToBill = input.Split(", ".ToCharArray, StringSplitOptions.RemoveEmptyEntries);

否则,你做的方式,你仍然可以不做RegEx,通过使用String.Contains函数进行比较:

string[] accountsToBill;
if (input.Contains(",")) {
    accountsToBill = input.Split(",".ToCharArray, StringSplitOptions.RemoveEmptyEntries);
} else if (input.Contains(" ")) {
    accountsToBill = input.Split(" ".ToCharArray, StringSplitOptions.RemoveEmptyEntries);
}

您的正则表达式似乎有点偏离。我已经重写了。

//sample input = 0123456789,0123456789,0123456789
if (Regex.IsMatch(input, @"'d{10},"))
{
    Console.WriteLine("comma");
}
else if (Regex.IsMatch(input, @"'d{10}'s"))
{
    Console.WriteLine("White space");
}