【发布时间】:2019-07-30 05:40:36
【问题描述】:
我想在给定的文本文件中找到一批关键字的索引/偏移量。 现在,我遇到了很多关于 stackoverflow 的问题,但回答 this 最适合我。
这里唯一的问题是,上述问题只为单个关键字提供了解决方案,而我有超过 25 个关键字要查找,我认为必须有一个比为每个关键字写 switch...case 或 if...else 更好的解决方案关键词。
如何在这里优化我的任务?也欢迎任何比链接问题更好的方法。
假设我的文本文件有以下内容:
斯蒂芬·哈伦,十二月,9,4055551235
劳拉克劳辛,1 月 23 日,4054447788
威廉·康纳,十二月,13,123456789
卡拉玛丽,十月,23,1593574862
奥黛丽卡瑞特,一月,16,1684527548
塞巴斯蒂安·贝克,十月,23,9184569876
我想找到的关键字是:
十二月、一月、三月、四月、五月
现在,输出应该是:
十二月:16
1 月:第 2 行
January的总体索引12 月:第 3 行中
January的总体索引....
当前代码:
class Program
{
static void Main(string[] args)
{
var keyword = "December";
var keyword2 = "January";
int totalLength = 0;
using (var sr = new StreamReader("file.txt"))
{
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
if (String.IsNullOrEmpty(line)) continue;
if (line.IndexOf(keyword, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
Console.WriteLine("December: " + (totalLength + line.IndexOf(keyword, StringComparison.CurrentCultureIgnoreCase)));
}
if (line.IndexOf(keyword2, StringComparison.CurrentCultureIgnoreCase) >= 0)
{
Console.WriteLine("January: " + (totalLength + line.IndexOf(keyword, StringComparison.CurrentCultureIgnoreCase)));
}
.................
........................................................
totalLength += line.Length;
}
}
}
}
注意:在这里也标记Java,因为我对方法而不是特定于语言的解决方案感兴趣。
【问题讨论】:
-
请在您的问题中添加您的输入和预期输出。另外,到目前为止,您尝试了什么?发布您的代码。
-
添加它。请给我一点时间。
-
还会添加代码
-
一种方法是将.txt文件的数据转换为数据表,然后使用搜索参数对表进行查询。
标签: java c# .net full-text-search