嘿伙计们我正在尝试在C#中创建一个正则表达式函数,它将搜索所有以“es”结尾的单词的句子。我正在尝试使输出格式为
Word1 = bes
Word2 = mes
Word3 = ces
等等。问题是我在编译时不断收到“errorCS0136”。我尝试使用Console.WriteLine()
并在循环的每次迭代中使用计数器变量增量但这不起作用。这是我得到的错误的副本。非常感谢。
Task1.cs(66,52):错误CS1026:意外的符号',',期待')'
Task1.cs(66,55):错误CS0136:无法在此范围内声明名为“match”的局部变量,因为它会给“匹配”赋予不同的含义,“匹配”已在'父级或当前使用中使用'范围表示别的东西
Task1.cs(66,59):错误CS1026:意外符号')',期待')'
编译失败:3个错误,0个警告
以下是我的源代码。
public void numPatternSearch(){
string input3;
string pattern = @"\b\w+es\b";
//Regex regex = new Regex("[*]");
Console.WriteLine("Enter string to search: ");
input3 = Console.ReadLine();
//input3 = string.Join("", input3.Where(char.IsDigit).ToArray());
//input3 = Regex.Match(input3, @"\d+").Value;
//string[] substrings = regex.Split(input3);
foreach (Match match in Regex.Matches(input3, pattern)){
int count = 1;
string[] substrings = "Number"+count+" = '{0}'", match;
count++;
Console.WriteLine(substrings);
}
//Console.WriteLine(input3);
}
}
答案 0 :(得分:3)
您的编译器错误发生在该行:
string[] substrings = "Number"+count+" = '{0}'", match;
那是无效的c#。如果你想要一个结果字符串的列表,你可以试试这个:
List<string> substrings = new List<string>();
int count = 1;
foreach (Match match in Regex.Matches(input3, pattern))
{
string substring = string.Format("Number{0} = '{1}'", count, match);
count++;
Console.WriteLine(substring);
substrings.Add(substring);
}
您现在可以使用substrings
进行进一步操作。您可以使用
List<string>
转换为数组
string[] subStringArray = substrings.ToArray();
请注意,我在循环之外声明了count
。否则你总是使用1
作为计数!
答案 1 :(得分:2)
您收到编译错误。您的代码永远不会运行。
错误是在第66行说出来,我假设是这一行:
string[] substrings = "Number"+count+" = '{0}'", match;
这不是有效的C#。我不确定你想要什么。可以像这样初始化数组:
string[] substrings = ["Number"+countString+" = '{0}'", otherString]; // where otherString needs to be a string
看起来更像是在尝试调用Format。
答案 2 :(得分:1)
源代码的修改版本:
public void numPatternSearch()
{
string input3;
string pattern = @"\b\w+es\b";
Console.WriteLine("Enter string to search: ");
input3 = Console.ReadLine();
string[] substrings = new string[100];
int count = 1;
foreach (Match match in Regex.Matches(input3, pattern))
{
substrings[count - 1] = string.Format("Number" + count + " = {0}", match);
Console.WriteLine(substrings[count - 1]);
count++;
}
}