我在C#中循环了很多像这样的字符串:
"看起来,对遥控器有好处是一回事,对生活有好处,那就是别的东西."
在这些字符串中,我有一个选定的单词,由前一个函数的索引确定,就像上面例子中的第二个"好"一样.
" 对于遥控器来说,好看(< - 不是这一个)对于生活来说是好事(< - 这一个),那是另一回事."
我想找到我所选单词周围的单词.在上面的情况下,事情和反对.
"看起来,对遥控器有好处是一回事,对生活有好处,那就是别的东西."
我已尝试将字符串.split()与正则表达式的不同方法分开,但我找不到实现此目的的好方法.我有机会获得这个词,好它位于哪里的字符串在上面的例子中,索引(41以上).
巨额奖金是否会忽略标点符号和逗号,这样在上面的例子中,我的理论函数将返回只针对因为之间有一个逗号的事情和好.
有没有一种简单的方法来实现这一目标?任何帮助赞赏.
包括"巨额奖金":
string text = "Look, good against remotes is one thing, good against the living, that’s something else.";
string word = "good";
int index = 41;
string before = Regex.Match(text.Substring(0, index), @"(\w*)\s*$").Groups[1].Value;
string after = Regex.Match(text.Substring(index + word.Length), @"^\s*(\w*)").Groups[1].Value;
Run Code Online (Sandbox Code Playgroud)
在这种情况下before,由于逗号将是一个空字符串,并将after"反对".
说明:获取时before,第一步是抓住字符串的第一部分,直到目标字之前,text.Substring(0, index)执行此操作.然后我们使用正则表达式(\w*)\s*$匹配并捕获一个单词(\w*),后跟\s*字符串末尾的任意数量的空格($).第一个捕获组的内容是我们想要的单词,如果我们无法匹配正则表达式仍将匹配的单词,但它将匹配空字符串或仅空格,并且第一个捕获组将包含空字符串.
获取的逻辑after几乎相同,除了text.Substring(index + word.Length)用于获取目标字之后的其余字符串.正则表达式^\s*(\w*)除了它锚定到与字符串的开头是类似^与\s*来之前的\w*,因为我们需要去掉空格对单词的前端.