两个字符串之间,但第一个字符串必须是最后一次出现

时间:2014-05-02 14:53:43

标签: c# string between

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


//Button1 Click
MessageBox.Show(Between("Abcdefgh- 50- 25------------ 37,50-#", "- ", "-#"));

结果是:50- 25------------ 37,50。但我想选择最后一个' - '。因此结果必须是37,50

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

我使用正则表达式。

public static string Between(this string value, string a, string b)
{
    return Regex.Match(value, string.Format("((?:(?!{0}).)*){1}", Regex.Escape(a), Regex.Escape(b))).Groups[1].Value;
}

正则表达式正在寻找前一个b之前的b并选择它们之间的字符。

改编自:https://stackoverflow.com/a/18264730/134330