从字符串中提取短语

时间:2012-07-24 19:15:02

标签: c#

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

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

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的列表中。

然而,当我开始收到超出范围或没有提取完整短语的错误时,我似乎无法找到一种令人满意的循环方式?

由于

2 个答案:

答案 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"