C# 截取字符串
本文章已收錄于:
//str為要進(jìn)行截取的字符串,start是第一個(gè)關(guān)鍵字(字符串),last是第二個(gè)關(guān)鍵字(字符串)?? 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)???????????? ????????????????{???????????????????? ????????????????//左右都截取(都取前面)(包含關(guā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;??????????? ????????????????//左右都截取(都取前面)(去除關(guān)鍵字)???????????????????? ????????????????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;????????? ????????????????//左右都截取(都取后面)(包含關(guān)鍵字)???????????????????? ????????????????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;???????? ????????????????//左右都截取(都取后面)(去除關(guān)鍵字)???????????????????? ????????????????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;??????????????? ????????????????//左右都截取(一前一后)(包含關(guān)鍵字)?????????????????????? ????????????????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;?????????? ????????????????//左右都截取(一前一后)(去除關(guān)鍵字)?????????????????????? ????????????????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)????????? ????????????????????????{????????????????? ????????????????????????//只往左截取(取前面的)(包含關(guān)鍵字)??????????? ????????????????????????case?7:?str?=?str.Substring(0,?str.ToLower().IndexOf(start.ToLower())?+?start.Length);?break;??????? ????????????????????????//只往左截取(取前面的)(去除關(guān)鍵字)???????????????????? ????????????????????????case?8:?str?=?str.Substring(0,?str.ToLower().IndexOf(start.ToLower()));?break;????????? ????????????????????????//只往左截取(取后面的)(包含關(guān)鍵字)??????????????????? ????????????????????????case?9:?str?=?str.Substring(0,?str.ToLower().LastIndexOf(start.ToLower())?+?start.Length);?break;??? ????????????????????????//只往左截取(取后面的)(去除關(guān)鍵字)?????????????????? ????????????????????????case?10:?str?=?str.Substring(0,?str.ToLower().LastIndexOf(start.ToLower()));?break;?????????????? ????????????????????????//只往右截取(取前面的)(包含關(guān)鍵字)???????????????????? ????????????????????????case?11:?str?=?str.Substring(str.ToLower().IndexOf(start.ToLower()),?str.Length?-?str.ToLower().IndexOf(start.ToLower()));?break;???? ????????????????????????//只往右截取(取前面的)(去除關(guān)鍵字)?????????????????? ????????????????????????case?12:?str?=?str.Substring(str.ToLower().IndexOf(start.ToLower())?+?start.Length,?str.Length?-?str.ToLower().IndexOf(start.ToLower())?-?start.Length);?break;???? ????????????????????????//只往右截取(取后面的)(包含關(guān)鍵字)???????????????????? ????????????????????????case?13:?str?=?str.Substring(str.ToLower().LastIndexOf(start.ToLower()),?str.Length?-?str.ToLower().LastIndexOf(start.ToLower()));?break;???????????????? ????????????????????????//只往右截取(取后面的)(去除關(guān)鍵字)????????????????????? ????????????????????????case?14:?str?=?str.Substring(str.ToLower().LastIndexOf(start.ToLower())?+?start.Length,?str.Length?-?str.ToLower().LastIndexOf(start.ToLower())?-?start.Length);?break;????? ????????????????????????default:?str?=?"無(wú)";?break;????????????? ????????????????????????}??????????? ????????????????????????}???????? ????????????????????????}???????? ????????????????????????else??????? ????????????????????????????{??????????? ????????????????????????????str?=?"無(wú)!";????? ????????????????????????????}????????? ????????????????????????????return?str;??? ????????????????????????????}??
C# 之 字符串截取--Substring ?????????? ? ? ? ?說(shuō)到字符串截取,大家首先相當(dāng)?shù)膽?yīng)該就是substring函數(shù),今天就來(lái)給大家講講substring函數(shù)。
[csharp] view plaincopy print?class?Program?? ????{?? ????????static?void?Main(string[]?args)?? ????????{?? ????????????string?s1?=?"所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)";?? ?? ????????????Console.WriteLine(s1.Substring(0));?? ????????????Console.WriteLine(s1.Substring(4));?? ????????????Console.WriteLine(s1.Substring(s1.Length));?? ????????????Console.WriteLine("--------------------------------");?? ????????????Console.WriteLine(s1.Substring(s1.Length+1));?? ?????????????? ????????}?? ????}?? class Program{static void Main(string[] args){string s1 = "所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)";Console.WriteLine(s1.Substring(0));Console.WriteLine(s1.Substring(4));Console.WriteLine(s1.Substring(s1.Length));Console.WriteLine("--------------------------------");Console.WriteLine(s1.Substring(s1.Length+1));}}
2.public string Substring(int startIndex, int length);
? ? ? ? 從此字符串檢索子字符串。 子字符串從指定的字符位置第startIndex個(gè)字符)開(kāi)始,且具有指定的長(zhǎng)度(子字符串的長(zhǎng)度length)。
[csharp] view plaincopy print?class?Program?? ????{?? ????????static?void?Main(string[]?args)?? ????????{?? ????????????string?s1?=?"所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)";?? ?? ????????????Console.WriteLine(s1.Substring(0,0));?? ????????????Console.WriteLine(s1.Substring(4,10));?? ????????????Console.WriteLine(s1.Substring(s1.Length,0));?? ????????????Console.WriteLine("--------------------------------");?? ????????????//Console.WriteLine(s1.Substring(4,s1.Length));?????//字符串長(zhǎng)度超出范圍?? ????????????//Console.WriteLine(s1.Substring(s1.Length,1));?????//字符串長(zhǎng)度超出范圍?? ????????????Console.WriteLine(s1.Substring(s1.Length+1));???????//開(kāi)始位置不能大于字符串長(zhǎng)度?? ?????????????? ????????}?? ????}?? class Program{static void Main(string[] args){string s1 = "所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)";Console.WriteLine(s1.Substring(0,0));Console.WriteLine(s1.Substring(4,10));Console.WriteLine(s1.Substring(s1.Length,0));Console.WriteLine("--------------------------------");//Console.WriteLine(s1.Substring(4,s1.Length)); //字符串長(zhǎng)度超出范圍//Console.WriteLine(s1.Substring(s1.Length,1)); //字符串長(zhǎng)度超出范圍Console.WriteLine(s1.Substring(s1.Length+1)); //開(kāi)始位置不能大于字符串長(zhǎng)度}}
? ? ? ? 現(xiàn)在我們有這么一個(gè)需求,將"所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)"這個(gè)字符串,按照"/"分別截取出來(lái),下面看看我們用Substring函數(shù)怎么實(shí)現(xiàn)。
class?Program?? ????{?? ????????static?void?Main(string[]?args)?? ????????{?? ????????????string?s1?=?"所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)";?? ?? ????????????int?first?=?s1.IndexOf("/")+1;??????//第一個(gè)"/"的位置?? ????????????int?second?=?s1.IndexOf("/",?first?+?1)?+?1;??????//第二個(gè)"/"的位置?? ????????????int?third?=?s1.IndexOf("/",?second?+?1)?+?1;???????//第三個(gè)"/"的位置?? ????????????Console.WriteLine("第一個(gè)'/?'的位置:?"?+?first);?????//7?? ????????????Console.WriteLine("第二個(gè)'/?'的位置:?"?+?second?);????//12?? ????????????Console.WriteLine("第三個(gè)'/?'的位置:?"?+?third?);?????//16?? ?? ????????????int?startIndex1?=?0;?? ????????????int?length1?=?first?-?1;??//6--"所屬機(jī)構(gòu)名稱(chēng)"中"稱(chēng)"的位置?? ????????????Console.WriteLine("length1="?+?length1);?? ????????????Console.WriteLine(s1.Substring(startIndex1,length1));???//所屬機(jī)構(gòu)名稱(chēng)--從第0個(gè)位置開(kāi)始,6個(gè)字符?? ????????????Console.WriteLine("-------------------------------------------------");?? ?? ????????????int?startIndex2?=?first?;????//7?? ????????????int?length2?=?(second-1)?-first;???????//4--"教師姓名"中"名"的位置-第一個(gè)"/"的位置?? ????????????Console.WriteLine("startIndex2="?+?startIndex2);?? ????????????Console.WriteLine("length2="?+?length2);?? ????????????Console.WriteLine(s1.Substring(startIndex2,?length2));???//教師姓名--從第7個(gè)位置開(kāi)始,4個(gè)字符?? ????????????Console.WriteLine("-------------------------------------------------");?? ?? ????????????int?startIndex3?=?second??;???????//12?? ????????????int?length3?=?(third?-1)-second?;???????//4--"課程類(lèi)型"中"型"的位置-第二個(gè)"/"的位置?? ????????????Console.WriteLine("startIndex3="?+?startIndex3);?? ????????????Console.WriteLine("length3="?+?length3);?? ????????????Console.WriteLine(s1.Substring(startIndex3,?length3));???//課程類(lèi)型--從第12個(gè)位置開(kāi)始,4個(gè)字符?? ????????????Console.WriteLine("-------------------------------------------------");?? ?? ????????????int?startIndex4?=?third?;???//17?? ????????????Console.WriteLine("startIndex4="?+?startIndex4);?? ????????????Console.WriteLine(s1.Substring(startIndex4));???//課程名稱(chēng)--從第17個(gè)位置開(kāi)始?? ????????????Console.WriteLine("-------------------------------------------------");?? ?? ?????????????? ????????}?? ????}?? class Program{static void Main(string[] args){string s1 = "所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)";int first = s1.IndexOf("/")+1; //第一個(gè)"/"的位置int second = s1.IndexOf("/", first + 1) + 1; //第二個(gè)"/"的位置int third = s1.IndexOf("/", second + 1) + 1; //第三個(gè)"/"的位置Console.WriteLine("第一個(gè)'/ '的位置: " + first); //7Console.WriteLine("第二個(gè)'/ '的位置: " + second ); //12Console.WriteLine("第三個(gè)'/ '的位置: " + third ); //16int startIndex1 = 0;int length1 = first - 1; //6--"所屬機(jī)構(gòu)名稱(chēng)"中"稱(chēng)"的位置Console.WriteLine("length1=" + length1);Console.WriteLine(s1.Substring(startIndex1,length1)); //所屬機(jī)構(gòu)名稱(chēng)--從第0個(gè)位置開(kāi)始,6個(gè)字符Console.WriteLine("-------------------------------------------------");int startIndex2 = first ; //7int length2 = (second-1) -first; //4--"教師姓名"中"名"的位置-第一個(gè)"/"的位置Console.WriteLine("startIndex2=" + startIndex2);Console.WriteLine("length2=" + length2);Console.WriteLine(s1.Substring(startIndex2, length2)); //教師姓名--從第7個(gè)位置開(kāi)始,4個(gè)字符Console.WriteLine("-------------------------------------------------");int startIndex3 = second ; //12int length3 = (third -1)-second ; //4--"課程類(lèi)型"中"型"的位置-第二個(gè)"/"的位置Console.WriteLine("startIndex3=" + startIndex3);Console.WriteLine("length3=" + length3);Console.WriteLine(s1.Substring(startIndex3, length3)); //課程類(lèi)型--從第12個(gè)位置開(kāi)始,4個(gè)字符Console.WriteLine("-------------------------------------------------");int startIndex4 = third ; //17Console.WriteLine("startIndex4=" + startIndex4);Console.WriteLine(s1.Substring(startIndex4)); //課程名稱(chēng)--從第17個(gè)位置開(kāi)始Console.WriteLine("-------------------------------------------------");}}
C# 之 字符串截取--Substring ?????????? ? ? ? ?說(shuō)到字符串截取,大家首先相當(dāng)?shù)膽?yīng)該就是substring函數(shù),今天就來(lái)給大家講講substring函數(shù)。
1.public String Substring(int startIndex);
? ? ? ?從此字符串檢索子字符串。 子字符串從指定的字符位置(第startIndex個(gè)字符)開(kāi)始,一直到此字符串末尾。[csharp] view plaincopy print?
2.public string Substring(int startIndex, int length);
? ? ? ? 從此字符串檢索子字符串。 子字符串從指定的字符位置第startIndex個(gè)字符)開(kāi)始,且具有指定的長(zhǎng)度(子字符串的長(zhǎng)度length)。
[csharp] view plaincopy print?
? ? ? ? 現(xiàn)在我們有這么一個(gè)需求,將"所屬機(jī)構(gòu)名稱(chēng)/教師姓名/課程類(lèi)型/課程名稱(chēng)"這個(gè)字符串,按照"/"分別截取出來(lái),下面看看我們用Substring函數(shù)怎么實(shí)現(xiàn)。
[csharp] view plaincopy print?
? ? ? ? Substring函數(shù)能實(shí)現(xiàn)字符串截取,一般和IndexOf函數(shù)一起使用。如果用Substring函數(shù)實(shí)現(xiàn)上面我們所需要的功能的話(huà),邏輯有些復(fù)雜,代碼太多,一不小心就容易出錯(cuò)。那么下一篇博客就教大家怎么用別的函數(shù)簡(jiǎn)單實(shí)現(xiàn)我們想要的字符串截取功能。
總結(jié)
- 上一篇: 指针深入探讨
- 下一篇: C#中文件及文件夾的遍历