在java.lang包中有String.split()方法,返回是一個數組。
一、「.」和「|」都是轉義字符,必須得加"\\";
若是用「.」做爲分隔的話,必須是以下寫法:
String.split("\\."),這樣才能正確的分隔開,不能用String.split(".");
若是用「|」做爲分隔的話,必須是以下寫法:
String.split("\\|"),這樣才能正確的分隔開,不能用String.split("|");
二、若是在一個字符串中有多個分隔符,能夠用「|」做爲連字符,好比:「acount=? and uu =? or n=?」,把三個都分隔出來,能夠用
String.split("and|or");
三、public String[] split(String regex,int limit)根據匹配給定的正則表達式來拆分此字符串。
此方法返回的數組包含此字符串的每一個子字符串,這些子字符串由另外一個匹配給定的表達式的子字符串終止或由字符串結束來終止。數組中
的子字符串按它們在此字符串中的順序排列。若是表達式不匹配輸入的任何部分,則結果數組只具備一個元素,即此字符串。
四、public string[] split(string regex)
這裏的參數的名稱是 regex ,也就是 regular expression (正則表達式)。這個參數並非一個簡單的分割用的字符,而是一個正則表達式,
他對一些特殊的字符可能會出現你預想不到的結果,好比測試下面的代碼:
(1) 用豎線 | 分隔字符串,你將得不到預期的結果 java
String[] aa = "aaa|bbb|ccc".split("|"); //String[] aa = "aaa|bbb|ccc".split("\\|"); 這樣才能獲得正確的結果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }正則表達式
(2)用豎 * 分隔字符串運行將拋出java.util.regex.PatternSyntaxException異常,用加號 + 也是如此。 express
String[] aa = "aaa*bbb*ccc".split("*"); //String[] aa = "aaa|bbb|ccc".split("\\*"); 這樣才能獲得正確的結果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }數組
(3)顯然,+ * 不是有效的模式匹配規則表達式,用"\\*" "\\+"轉義後便可獲得正確的結果。
(4) "|" 分隔串時雖然可以執行,可是卻不是預期的目的,"\\|"轉義後便可獲得正確的結果。
(5)還有若是想在串中使用""字符,則也須要轉義.首先要表達"aaaa\bbbb"這個串就應該用"aaaa\\bbbb",若是要分隔就應該這樣才能獲得正確結果:
String[] aa = "aaa\\bbb\\bccc".split(\\\\);
(6) 還有就是點號".",也要首先轉義才能獲得正確的結果。
第一種方法: 測試
string s="abcdeabcdeabcde"; string[] sArray=s.Split('c') ; foreach(string i in sArray) Console.WriteLine(i.ToString());字符串
輸出下面的結果:
ab
deab
deab
de
第二種方法:
咱們看到告終果是以一個指定的字符進行的分割。使用另外一種構造方法對多個字符進行分割: string
string s="abcdeabcdeabcde"; string[] sArray1=s.Split(new char[3]{'c','d','e'}) ; foreach(string i in sArray1) Console.WriteLine(i.ToString());it
能夠輸出下面的結果:
ab
ab
ab
第三種方法:
除了以上的這兩種方法之外,第三種方法是使用正則表達式。新建一個控制檯項目。
而後先添加 using System.Text.RegularExpressions; io
using System.Text.RegularExpressions string content=agcsmallmacsmallgggsmallytx; string[] resultString=Regex.Split(content,small,RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString());foreach
輸出下面的結果:
agc
mac
ggg
ytx
第四種方法:
string str1="我*****是*****一*****個*****教*****師"; string[] str2; str1=str1.Replace("*****","*") ; str2=str1.Split(’*‘) ; foreach(string i in str2) Console.WriteLine(i.ToString());
第五種方法:
string str1=」我**是*****一*****個*****教*****師「;
我但願顯示的結果爲:我是一個教師。 我若是採用上面的第四種方法來作就會產生下面的錯誤:我 是一個教師。中間有空格輸出,因此輸出結果並非但願的結果,這就又回到了正則表達式了,這時能夠採用下面的第五種方法:
string str1=‘我**是*****一*****個*****教*****師「; string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[*]+); foreach(string i in str2) Console.WriteLine(i.ToString());
這裏經過[*]+ 巧妙的完成了咱們的目標。