C#如何打印以.txt文件中特定字母开头的单词

时间:2017-05-11 11:28:52

标签: c# arrays file

我在下面有这个方法GetWordsArray,当我在主程序中调用该方法时,它只打印出以整个句子的特定字母开头的整个句子。

public static void GetWordsArray(string path, string toFind)
{
    string[] words = File.ReadAllLines(path);
    if (File.Exists(path)) 
    {              
        foreach (string line in words)
        {
            if(line.StartsWith(toFind))
            {
                Console.WriteLine(line);
            }                  
        }
    }
    else
    {
        Console.WriteLine("Directory not found");
    }
}

这是从txt文件中输出的内容:

  橘子你的小肉豆蔻上没有红李子。 LAMB一个好的RISSOLES捣碎通过滚动黄色肉冻煮熟的一些朝鲜蓟底部,然后把它们扔成五法郎片。

如果特定字母是o,我希望它像这样打印:例如: oranges OF等。

这就是我在主程序中调用方法的方法:

Reader r = new Reader();            
string path = @"randomtext.txt";
Reader.GetWordsArray(path, "o");

如何打印文本文件中以字母o开头的所有单词?

3 个答案:

答案 0 :(得分:0)

你的文本文件似乎只有一行,并且由于你的长句以o开头,它会打印整行。您可以格式化文件,使每个单词都位于一行上,也可以分割每一行并遍历元素并在那里进行检查:

if (File.Exists(path))
{
    string[] words = File.ReadAllLines(path);

    foreach (string line in words)
    {
        string [] elements = line.Split(' ');
        foreach (string elem in elements)
        {
            if (elem.StartsWith(toFind))
            {
                Console.WriteLine(elem);
            }
        }
    }
}

现在唯一的输出应该是橙子

答案 1 :(得分:0)

除此之外,您还需要读取每行所需的每一行,并在每个单词中搜索您的字符串。你可以这样做:

    if (File.Exists(path))
    {
        string[] lines = File.ReadAllLines(path);
        foreach (var line in lines)
        {
            var words = line.Split(' ');
            foreach (var word in words)
            {
                if (word.StartsWith(toFind))
                {
                    Console.WriteLine(word);
                }
            }
        }
    }
    else
    {
        Console.WriteLine("Directory not found");
    }

并在致电File.Exists(path)

之前检查File.ReadAllLines(path)

答案 2 :(得分:0)

不是逐行阅读,而是使用File.ReadAllText Method将整个文件作为输入。像这样:

string input = 
    @"oranges you have no red plums on a little nutmeg. RAGOUT OF LAMB A GOOD RI
    oranges you have no red plums on a little nutmeg. RAGOUT OF LAMB A GOOD RI
    oranges you have no red plums on a little nutmeg. RAGOUT OF LAMB A GOOD RI
    SSOLES Mince some artichoke-bottoms cooked by rolling the yellow asp
    ic, and throw them a five-franc piece.";

在Space and Environnement换行符上滑动此文本并排列您要查找的内容:

var arrayOfWord= input.Split(  new[] { " ","\r\n", "\n" }
                             , StringSplitOptions.RemoveEmptyEntries);

string toFind = "o";
var result = arrayOfWord.Where(y=> y.StartsWith(toFind));

您现在有了自己的单词列表。如果你想打印它们,一个简单的foreach应该可以做到这一点。