好的,可能之前有人问过,但我找不到明确的答案。
我正在为我的父亲构建一个应用程序,他想要一个圣经应用程序。它将使用语音识别。我可以创建整个应用程序,没有问题,我只想弄清楚是否有更简单的方法。
我有一个带有Genesis第1章的txt文件,然后我有几个txt文件是Genesis第一章,但是每个txt文件都是一节经文。
我可以调用每个txt文件并读取它没问题。但是,如果我这样做,将会有几千个txt文件和几千行代码。
我知道文件是由块读取的。有没有办法我可以读完整章并阅读一行,例如:
If (speech == "Genesis chapter one verse nine")
{
Bible.SpeakAsync(@"Gen1V9.txt");
}
我知道索引是0 - X.用x表示文本的长度。我可以打电话给nth line
If (speech == "Genesis chapter one verse nine")
{
Bible.SpeakAsync(File.ReadLine[10](@"Gen1.txt");
}
我省略了很多代码,但这只是一个例子。而不是我调用每个txt文件,我可以调用一个txt文件并让它读取某一行。如果是这样,整本圣经都是固定的长度,所以我知道第9节将始终是txt文件中的第10行。
这是我多年来通过提取单个txt文件来完成的,但我想要清理代码并尽可能使用最少的代码。
我希望这是有道理的。演讲是无关紧要的,我只需要找到一个解决方案来获得第n行。
答案 0 :(得分:1)
您可以使用File.ReadAllLines()
:
string[] bible = File.ReadAllLines("path-to-text-file.txt");
Bible.SpeakAsync (bible[0]); //line one
Bible.SpeakAsync (bible[1]); //line two
让它说多行(9-10-11)...: 你可以这样做:
Bible.SpeakAsync(bible[9]+bible[10]);
或者您可以使用以下功能:
void Speak(params int[] lines)
{
string all = "";
for(int i=0; i< lines.length; i++)
all += bible[lines[i]];
Bible.SpeakAsync(all);
}
然后您就可以使用它:
Speak(10);
Speak(9,10,11,12);