2

我有一个文本文件,我需要搜索然后打印以从中筛选某些短语。

我可以把文本文件变成一个字符串,然后像这样找到短语第一部分的索引;

int first = source.IndexOf(start-keyword);

source 是文本文件字符串,start-of-phrase 是我要查找的第一个关键字。

但是,当我尝试获取 end 关键字的索引时,我会卡住,因为有时 end 关键字出现在第一个关键字之前。

所以我在我的代码中添加了以下位,所以它看起来像:

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));

然后最后一行将其添加到名为短语的列表中。

但是,当我开始遇到诸如超出范围或未提取完整短语之类的错误时,我似乎找不到令人满意的循环方式?

谢谢

4

2 回答 2

3

您可能想查看使用String.IndexOf Method(String, Int32),您可以在其中指定第一次开始出现结束的起始索引值。

int last = source.IndexOf(end-keyword, first + start-keyword.Length ) 
           + end-keyword.Length;
于 2012-07-24T19:18:31.687 回答
0

这听起来像是正则表达式的理想候选者。就像是

"(\b[Pp]rogram\b)(.*)(\b[Vv]cvarsall\b)"

应该匹配

"Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall" 

"something Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall something"
于 2012-07-24T19:38:46.267 回答