在文本中查找字符串,但我也想要在发生之前和之后的文本

时间:2013-07-05 15:48:39

标签: c#

这是我正在寻找的东西:

我有一个“关键字”值...让我们说“狐狸”。我有一个“消息”的价值,如“快速的棕色狐狸跳过懒狗”。理想情况下,我的返回将是事件两侧的+ X或-X字符,如:“...快速棕色狐狸跳过......”(我将在后面添加省略号)。

对这个问题有什么好的,高效的方法?我担心关键字可能出现在消息的开头,也不希望它在每个消息评估中产生很多变化。我也不介意是否切断了单词。

使用这个时想到的一些事情就是我可以使用某种string.contains和string.substring ...等等。那远远不够了?

2 个答案:

答案 0 :(得分:4)

您可以使用正则表达式

 ".{0,"+X+"}"+Regex.Escape(keyword)+".{0,"+X+"}"

因此,如果关键字为fox且X为5,则您的正则表达式为

 .{0,5}fox.{0,5}

此正则表达式将匹配right的{​​{1}}和left一侧的0到5个字符。


您的代码

fox

答案 1 :(得分:2)

您可以使用String.IndexOf方法查找查找的位置,然后根据返回值和字符串的长度计算一些偏移量,然后您可以使用{检索关键字+/- X字符{1}}方法。