我想获得两个给定单词之间的最短字符串。我可以在两个单词之间得到字符串,但如果有两次相同的单词就会出现问题。
句子:与其他人合作的人就在这里。
我想在最后的人和这里之间获取字符串。 这是我目前使用的方法:
private static string Between(this string value, string a, string b)
{
int posA = value.IndexOf(a);
int posB = value.LastIndexOf(b);
if (posA == -1)
{
return "";
}
if (posB == -1)
{
return "";
}
int adjustedPosA = posA + a.Length;
if (adjustedPosA >= posB)
{
return "";
}
return value.Substring(adjustedPosA, posB - adjustedPosA);
}
如果没有重复,此功能有效。但是对于这个例子,它返回了第一个人和这里之间的所有字符串。我怎样才能在最后一个人和这里之间得到结果?我期待的结果是 。
答案 0 :(得分:2)
使用LastIndexOf
查找这两个单词时,您总能找到该单词的最后一次出现。
int posA = value.LastIndexOf(a);
int posB = value.LastIndexOf(b);
然而:这可能不会产生你想要的“与其他人一起工作的人”。请澄清您的要求
处的正则表达式的其他解决方案