获取两个单词之间最短的字符串C#

时间:2016-05-30 00:54:56

标签: c# string substring

我想获得两个给定单词之间的最短字符串。我可以在两个单词之间得到字符串,但如果有两次相同的单词就会出现问题。

句子:与其他合作的就在这里。

我想在最后的这里之间获取字符串。 这是我目前使用的方法:

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);
}

如果没有重复,此功能有效。但是对于这个例子,它返回了第一个人和这里之间的所有字符串。我怎样才能在最后一个人和这里之间得到结果?我期待的结果是

1 个答案:

答案 0 :(得分:2)

使用LastIndexOf查找这两个单词时,您总能找到该单词的最后一次出现。

   int posA = value.LastIndexOf(a);
   int posB = value.LastIndexOf(b);

然而:这可能不会产生你想要的“与其他人一起工作的人”。请澄清您的要求

使用https://stackoverflow.com/a/35105389/101087

处的正则表达式的其他解决方案