正则表达式检查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位数字
您不应该使用正则表达式进行非常简单的字符串检查。他们有沉重的管理费用。在您提供的情况下,我没有看到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");
}