我可以使用PDF文档中的文本,并且我希望在用户输入的搜索短语出现的任何位置显示文本中的片段。假设搜索词是“iphone”,我想在文档中的每个iphone字实例中显示周围的 200个字符。理想情况下,代码段也应该从句子的开头开始。
使用.NET / C#执行此操作的最有效方法是什么?
答案 0 :(得分:2)
伪代码:
int start = -1;
int index = str.IndexOf(search);
while (index != -1)
{
print str.Substring(index-100, index+100);
index = str.IndexOf(search, index);
}
答案 1 :(得分:2)
您可以使用正则表达式执行此操作:
\s.{0,100}iphone.{0,100}\s
这说“匹配空白字符,最多100个字符,单词'iphone',最多100个字符,最后是空白字符。”在两端寻找空白,确保你得到完整的单词。
您可以像这样使用它(请注意,您可以Trim()
来自匹配项的空白区域:
var regex = new Regex(@"\s.{0,100}iphone.{0,100}\s",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
for (Match m = regex.Match(inputString); m.Success; m = m.NextMatch())
Console.WriteLine(m.Value.Trim());
您可以仅使用组匹配文本,而不是匹配空白然后修剪它。