本文轉載:http://www.cnblogs.com/liufei88866/archive/2012/05/12/2497395.html
一、通過函數方式進行獲取。
public string GetContent(string str, string start, string last, int n) { if (str.ToLower().IndexOf(start.ToLower()) >= 0) { if (str.ToLower().IndexOf(last.ToLower()) >= 0) { switch (n) { //左右都截取(都取前面)(包含關鍵字) case 1: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower())); str = str.Substring(0, str.ToLower().IndexOf(last.ToLower()) + last.Length); break; //左右都截取(都取前面)(去除關鍵字) case 2: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length); str = str.Substring(0, str.ToLower().IndexOf(last.ToLower())); break; //左右都截取(都取後面)(包含關鍵字) case 3: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()), str.Length - str.ToLower().LastIndexOf(start.ToLower())); str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()) + last.Length); break; //左右都截取(都取後面)(去除關鍵字) case 4: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length); str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); break; //左右都截取(一前一後)(包含關鍵字) case 5: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower())); str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower()) + last.Length); break; //左右都截取(一前一後)(去除關鍵字) case 6: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length); str = str.Substring(0, str.ToLower().LastIndexOf(last.ToLower())); break; default: str = ""; break; } } else { switch (n) { //只往左截取(取前面的)(包含關鍵字) case 7: str = str.Substring(0, str.ToLower().IndexOf(start.ToLower()) + start.Length); break; //只往左截取(取前面的)(去除關鍵字) case 8: str = str.Substring(0, str.ToLower().IndexOf(start.ToLower())); break; //只往左截取(取後面的)(包含關鍵字) case 9: str = str.Substring(0, str.ToLower().LastIndexOf(start.ToLower()) + start.Length); break; //只往左截取(取後面的)(去除關鍵字) case 10: str = str.Substring(0, str.ToLower().LastIndexOf(start.ToLower())); break; //只往右截取(取前面的)(包含關鍵字) case 11: str = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower())); break; //只往右截取(取前面的)(去除關鍵字) case 12: str = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length); break; //只往右截取(取後面的)(包含關鍵字) case 13: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()), str.Length - str.ToLower().LastIndexOf(start.ToLower())); break; //只往右截取(取後面的)(去除關鍵字) case 14: str = str.Substring(str.ToLower().LastIndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().LastIndexOf(start.ToLower()) - start.Length); break; default: str = "無"; break; } } } else { str = "無!"; } return str }
注意:獲取前區的關鍵字不能爲空!
eg:字符串:str=“luaikawa sent a message about Black Mini 3.5CH Channel Alloy Metal Helicopter Gyro RC Radio Remote Control Toy #190879181686”
錯誤寫法:GetContent(str, “”, “sent a message about”, 8) 返回值爲空字符串
正確寫法:GetContent(str, “sent a message about”, “”,8) 返回值爲luaikawa
二、通過正則表達式方法:即取出以單詞begin開頭和單詞end結尾之間的字符串
用正則表達式獲取指定的字符串:http://www.cnblogs.com/Stwo/archive/2011/08/29/2158260.html
eg:Other:mrjohnnymars sent a message about Antiqued Collar Clip Punk Blouse Shirt Metal Gold Red Black Blue Tips Pin Brooch #370926469688
Regex:(?<=:)([.\S\s]*)(?=sent a message about)
C# 用正則表達式獲取開始和結束字符串中間的值
/// <summary> /// 獲得字符串中開始和結束字符串中間得值 /// </summary> /// <param name="str">字符串</param> /// <param name="s">開始</param> /// <param name="e">結束</param> /// <returns></returns> public static string GetValue(string str, string s, string e) { Regex rg = new Regex("(?<=(" + s + "))[.\\s\\S]*?(?=(" + e + "))", RegexOptions.Multiline | RegexOptions.Singleline); return rg.Match(str).Value; }