/// <summary> /// 獲取某字符串中間的字符串,非貪婪模式 /// </summary> /// <param name="input">全字符串</param> /// <param name="left">左邊字符</param> /// <param name="right">右邊字符</param> /// <returns></returns> public static List<string> GetCenterString(String input, String left, String right) { List<string> list = new List<string>(); Regex reg = new Regex(left + "(((?!" + left + ").)+?)" + right); foreach (Match m in reg.Matches(input)) { list.Add(m.Value); } return list; }
改進:添加參數是否包含左右字符
/// <summary> /// 獲取某字符串中間的字符串,非貪婪模式 /// </summary> /// <param name="input">全字符串</param> /// <param name="left">左邊字符</param> /// <param name="right">右邊字符</param> /// <param name="isBorder">是否包含 left right 字符</param> /// <returns></returns> public static List<string> GetCenterString(String input, String left, String right, bool isBorder = true) { List<string> list = new List<string>(); Regex reg = new Regex(left + "(((?!" + left + ").)+?)" + right); foreach (Match m in reg.Matches(input)) { string value = m.Value; if (!isBorder) { value = value.Substring(left.Length, value.Length - left.Length); value = value.Substring(0, value.Length - right.Length); } list.Add(value); } return list; }
測試:
string all = @"這是一段測試數據{{dasdasdas}}這是一段測試數據{{ddd}{這是一段測試數據{{dasd}"; List<string> strList = StringPlus.GetCenterString(all, "{", "}");
輸出結果:{dasdasdas}、{ddd}、{dasd}