我有一个文本文件,我需要搜索,然后打印以从中筛选某些短语。
我可以把文本文件放到一个字符串中,然后像这样找到短语的第一部分的索引;
int first = source.IndexOf(start-keyword);
其中source是文本文件字符串,而start-of-phrase是我正在寻找的第一个关键字。
然而,当我尝试获取结束关键字的索引时,我遇到了问题,因为有时候结束关键字出现在第一个关键字之前。
所以我在代码中添加了以下内容,如下所示:
int first = source.IndexOf(start-keyword);
string source2 = source.Substring(first, source.Length - first);
int last = source2.IndexOf(end-keyword) + end-keyword.Length;
phrases.Add(source.Substring(first, last));
然后最后一行将其添加到名为phrase的列表中。
然而,当我开始收到超出范围或没有提取完整短语的错误时,我似乎无法找到一种令人满意的循环方式?
由于
答案 0 :(得分:3)
您可能希望查看使用String.IndexOf Method(String, Int32),您可以在其中指定首次启动结束的起始索引值。
int last = source.IndexOf(end-keyword, first + start-keyword.Length )
+ end-keyword.Length;
答案 1 :(得分:0)
这听起来像正则表达式的理想候选者。 像
这样的东西"(\b[Pp]rogram\b)(.*)(\b[Vv]cvarsall\b)"
应匹配
"Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall"
in
"something Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall something"