正则表达式输出错误

时间:2016-01-06 01:09:52

标签: c# regex

嘿伙计们我正在尝试在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);
    }
} 

3 个答案:

答案 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++;
        }

    }