我從我的PDF文檔中獲得文本,並且我希望從用戶輸入的搜索詞組出現的任何地方的文本中顯示片段。假設搜索字詞是「iphone」,我想在文檔中顯示每個iphone word實例的左右的200個字符。理想情況下,片段也應該從句子的開頭開始。C#:根據單個文檔上的搜索項提取片段
什麼是最有效的方式來使用.NET/C#做到這一點?
我從我的PDF文檔中獲得文本,並且我希望從用戶輸入的搜索詞組出現的任何地方的文本中顯示片段。假設搜索字詞是「iphone」,我想在文檔中顯示每個iphone word實例的左右的200個字符。理想情況下,片段也應該從句子的開頭開始。C#:根據單個文檔上的搜索項提取片段
什麼是最有效的方式來使用.NET/C#做到這一點?
僞代碼:
int start = -1;
int index = str.IndexOf(search);
while (index != -1)
{
print str.Substring(index-100, index+100);
index = str.IndexOf(search, index);
}
你可以用正則表達式做到這一點:
\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());
相反匹配的空白,然後修剪它,你只能使用一組文本匹配。
我其實更喜歡這個答案給我自己 – tster 2009-10-30 20:02:12