使用线性搜索

时间:2015-04-22 03:37:34

标签: c# arrays search linear

我希望能够找到所有单词" Monday"在我使用C#读取的文件中。 我可以读取该文件,我可以读取第一个星期一并获得其索引值,但我想要文件中所有星期一的索引值。

    if (ElementS == "2")
    {
        Console.WriteLine("Enter The name of the day e.g. Monday, Tuesday   etc.");
        string ElementA =  Convert.ToString(Console.ReadLine());



        foreach (string Monday in DayLines)
        {
        string Mday = "Monday";
        int Found = Search(DayLines, Mday);
        Console.WriteLine("The index is {0}", Found);
        }

它给出的输出是这样的: // The index is 0 并且它为文件中的每个元素执行此操作,而不仅仅是星期一。

2 个答案:

答案 0 :(得分:1)

  

我希望能够找到所有单词" Monday"在我读过的文件中   使用C#。

这应该有效:

static void Main()
{
    string text = File.ReadAllText(@"e:\1.txt");
    Regex regex = new Regex("Monday", RegexOptions.IgnoreCase);
    Match match = regex.Match(text);

    while (match.Success)
    {
        Console.WriteLine("'{0}' found at index {1}", match.Value, match.Index);
        match = match.NextMatch();
    }
}

答案 1 :(得分:0)

我想你想做这样的事情:

internal static void Main(string[] args)
{
    var dayLines = new List<string>()
        {
            "Monday Monday Monday",
            "Tuesday"
        };

    var dayToFind = Console.ReadLine();

    foreach (var line in dayLines.Where(l => l.Contains(dayToFind)))
    {
        var index = -1;
        do
        {
            index = line.IndexOf(dayToFind, index + 1);

            if (index > -1)
                 Console.WriteLine("The index is {0}", index);
        }
        while (index > -1);
    }

    Console.ReadLine();
}

您需要一个内部循环,它使用前一个索引作为搜索的起始点。否则你只会继续获得第一个实例。

输出&#34;星期一&#34;:

The index is 0
The index is 7
The index is 14