C# 之 字串擷取--Split
阿新 • • 發佈:2019-02-14
上一篇部落格《C# 之 字串擷取--Substring》 介紹了Substring函式,同時實現將"所屬機構名稱/教師姓名/課程型別/課程名稱"中的所屬機構名稱,教師姓名,課程型別,課程名稱分別截取出來。今天再給大家介紹一種字串擷取的函式Split。
String.Split方法:返回的字串陣列包含此例項中的子字串(由指定 Unicode 字元陣列(separator)的元素分隔)。
String.Split方法的過載方法有六種型別,但是我覺得都大同小異,只是引數不同,只是需求不同,其中的引數主要有:
1.Char[] 由指定的Unicode字元陣列的元素分隔。
2.Int32 指定返回子字串的最大數量。
3.StringSplitOptions 這個引數是一個列舉型別的引數,只有兩種選項:第一種StringSplitOptions.None表示返回值包括含有空字串的陣列元素;第二種StringSplitOptions.RemoveEmptyEntries表示返回值不包括含有空字串的陣列元素。
4.String[] 由指定字串陣列的元素分隔。
如果現在讓我們來實現上一篇部落格中的需求:將"所屬機構名稱/教師姓名/課程型別/課程名稱"這個字串,按照"/"分別截取出來。是不是更簡單了呢?直接用第一個最簡單的過載函式就能解決我們的問題了...
Split函式也能實現我們想要的字串擷取功能,雖然它返回的是一個字串陣列,過載的引數也比較多,但是和Substring函式相比起來更容易讓人理解......
String.Split方法:返回的字串陣列包含此例項中的子字串(由指定 Unicode 字元陣列(separator)的元素分隔)。
String.Split方法的過載方法有六種型別,但是我覺得都大同小異,只是引數不同,只是需求不同,其中的引數主要有:
1.Char[] 由指定的Unicode字元陣列的元素分隔。
2.Int32 指定返回子字串的最大數量。
3.StringSplitOptions 這個引數是一個列舉型別的引數,只有兩種選項:第一種StringSplitOptions.None表示返回值包括含有空字串的陣列元素;第二種StringSplitOptions.RemoveEmptyEntries表示返回值不包括含有空字串的陣列元素。
4.String[] 由指定字串陣列的元素分隔。
只要我們瞭解上面的四種引數分別代表什麼意思,我們就可以根據我們的需求去具體的選擇我們需要過載哪一個Split函式。下面是我將所有的Split函式過載方法實現的一個小例子:
public string[] Split(params char[] separator);
class Program { static void Main(string[] args) { string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱"; string[] split = s1.Split(new char[] { '/' }); //返回由'/'分隔的子字串陣列 foreach (string s in split) { Console.WriteLine(s); } Console.WriteLine(); } }
public string[] Split(char[] separator, int count);
class Program { static void Main(string[] args) { string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱"; string[] split = s1.Split(new char[] { '/' }, 3); //返回由'/'分隔的子字串陣列,子字串最大數量為3個 foreach (string s in split) { Console.WriteLine(s); } Console.WriteLine(); } }
public string[] Split(char[] separator, StringSplitOptions options);
class Program
{
static void Main(string[] args)
{
string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱";
//返回由'/'分隔的子字串陣列,StringSplitOptions.RemoveEmptyEntries表示返回值不包括含有空字串的陣列元素
string[] split = s1.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in split)
{
Console.WriteLine(s);
}
Console.WriteLine();
}
}
public string[] Split(string[] separator, StringSplitOptions options);
class Program
{
static void Main(string[] args)
{
string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱";
//返回由"名"分隔的子字串陣列,StringSplitOptions.None表示返回值包括含有空字串的陣列元素
string[] a = new string[] { "名" };
string[] split = s1.Split(a, StringSplitOptions.None);
foreach (string s in split)
{
Console.WriteLine(s);
}
Console.WriteLine();
}
}
public string[] Split(char[] separator, int count, StringSplitOptions options);
class Program
{
static void Main(string[] args)
{
string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱";
//返回由'/'分隔的子字串陣列,子字串最大數量為3個,StringSplitOptions.RemoveEmptyEntries表示返回值不包括含有空字串的陣列元素
string[] split = s1.Split(new char[] { '/' }, 3, StringSplitOptions.RemoveEmptyEntries);
foreach (string s in split)
{
Console.WriteLine(s);
}
Console.WriteLine();
}
}
public string[] Split(string[] separator, int count, StringSplitOptions options);
class Program
{
static void Main(string[] args)
{
string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱";
//返回由"名"分隔的子字串陣列,子字串最大數量為3個,StringSplitOptions.None表示返回值包括含有空字串的陣列元素
string[] a = new string[] { "名" };
string[] split = s1.Split(new char[] { '/' }, 3, StringSplitOptions.None);
foreach (string s in split)
{
Console.WriteLine(s);
}
Console.WriteLine();
}
}
如果現在讓我們來實現上一篇部落格中的需求:將"所屬機構名稱/教師姓名/課程型別/課程名稱"這個字串,按照"/"分別截取出來。是不是更簡單了呢?直接用第一個最簡單的過載函式就能解決我們的問題了...
class Program
{
static void Main(string[] args)
{
string s1 = "所屬機構名稱/教師姓名/課程型別/課程名稱";
string[] split = s1.Split(new char[] { '/' }); //返回由'/'分隔的子字串陣列
foreach (string s in split)
{
Console.WriteLine(s);
}
Console.WriteLine();
}
}
Split函式也能實現我們想要的字串擷取功能,雖然它返回的是一個字串陣列,過載的引數也比較多,但是和Substring函式相比起來更容易讓人理解......