我在下面有这个方法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开头的所有单词?
答案 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应该可以做到这一点。