c# - 从txt文件中逐行返回值
问题描述
好的,这可能以前被问过,但我找不到明确的答案。
我正在为我的父亲构建一个应用程序,他想要一个圣经应用程序。它将使用语音识别。我可以毫无问题地创建整个应用程序,我只是想弄清楚是否有更简单的方法。
我有一个创世记第 1 章的 txt 文件,然后我有几个 txt 文件是创世记第 1 章,但每个 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行。
解决方案
您可以使用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);
推荐阅读
- sql - 在更新触发器上排除/忽略某些列
- python - Python Pandas:将数据帧转换为 Str NAN 后不再是 NAN
- c# - 为什么我的记录在 mongodb upsert 场景中的对象 ID 为零?
- python - 数据库行删除与 Discord.py 集成不删除
- android-jetpack-compose - 在 Jetpack Compose 的 LazyColumn 下方放置一些东西
- ruby-on-rails - 导致 Rails 应用程序的 public/packs 中的 application.js 文件过大?/机架超时错误
- android - 如何将 VideoCapture 设置为应用本地存储
- visual-studio-2019 - 无法使用 Visual Studio 2019 在 Office 365 环境中调试 Excel 加载项
- javascript - 使整行成为可点击的表格
- apache - 如何在 .htaccess 中正确更改基本目录