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
。
任何人都可以帮助我吗?
答案 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并选择它们之间的字符。