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



以下是我想要的:

我有一个"关键字"值。。。比方说"狐狸"。我有一个"信息"值,比如"敏捷的棕色狐狸跳过懒惰的狗"。理想情况下,我的返回应该是事件两边的+X或-X个字符,比如:"…快速的棕色狐狸跳过去…"(我会在后面添加省略号)。

解决这个问题的好方法是什么?我担心关键词可能会出现在消息的开头,也不希望它在每一条消息的评估中都引起很大的骚动。我也不介意文字被剪掉。

在处理这个问题时,我想到的几件事是,我可以使用某种字符串.contents与字符串.substring等组合。这还远吗?

您可以使用regex

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

所以,若关键字是fox,X是5,则正则表达式将是

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

此正则表达式将在foxrightleft侧匹配0到5个字符。


您的代码

 String output=Regex.Match(input,regex).Value;

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

最新更新