java中String.split()用法

2018-08-02 18:09 更新

1.split()以特殊符號分割

例如: String str="a+b+c"; String[] strs=str.split("[+]");

  
 例如: String geom="point(121)"; 
  String[] list = geom.split("[(]|[)]");

2.split()用法

在java.lang包中有String.split()方法,返回是一個數(shù)組。

  1、“.”和“|”都是轉(zhuǎn)義字符,必須得加"\";

如果用“.”作為分隔的話,必須是如下寫法: String.split("\."),這樣才能正確的分隔開,不能用String.split("."); 如果用“|”作為分隔的話,必須是如下寫法: String.split("\|"),這樣才能正確的分隔開,不能用String.split("|");

  2、如果在一個字符串中有多個分隔符,可以用“|”作為連字符,

例:“acount=? and uu =? or n=?” 把三個都分隔出來,可以用 String.split("and|or");

  3、public String[] split(String regex,int limit)根據(jù)匹配給定的正則表達(dá)式來拆分此字符串。

此方法返回的數(shù)組包含此字符串的每個子字符串,這些子字符串由另一個匹配給定的表達(dá)式的子字符串終止或由字符串結(jié)束來終止。數(shù)組中 的子字符串按它們在此字符串中的順序排列。如果表達(dá)式不匹配輸入的任何部分,則結(jié)果數(shù)組只具有一個元素,即此字符串。

  4、public string[] split(string regex)

  這里的參數(shù)的名稱是 regex ,也就是 regular expression (正則表達(dá)式)。這個參數(shù)并不是一個簡單的分割用的字符,而是一個正則表達(dá)式, 他對一些特殊的字符可能會出現(xiàn)你預(yù)想不到的結(jié)果,比如測試下面的代碼:

(1) 用豎線 | 分隔字符串,你將得不到預(yù)期的結(jié)果

String[] aa = "aaa|bbb|ccc".split("|"); //String[] aa = "aaa|bbb|ccc".split("\|"); 這樣才能得到正確的結(jié)果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }

(2)用豎 * 分隔字符串運(yùn)行將拋出java.util.regex.PatternSyntaxException異常,用加號 + 也是如此。

String[] aa = "aaabbbccc".split(""); //String[] aa = "aaa|bbb|ccc".split("\"); 這樣才能得到正確的結(jié)果 for (int i = 0 ; i <aa.length ; i++ ) { System.out.println("--"+aa); }

(3)顯然,+ 不是有效的模式匹配規(guī)則表達(dá)式,用"\" "\+"轉(zhuǎn)義后即可得到正確的結(jié)果。

(4) "|" 分隔串時(shí)雖然能夠執(zhí)行,但是卻不是預(yù)期的目的,"\|"轉(zhuǎn)義后即可得到正確的結(jié)果。

(5)還有如果想在串中使用""字符,則也需要轉(zhuǎn)義.首先要表達(dá)"aaaa\bbbb"這個串就應(yīng)該用"aaaa\bbbb",如果要分隔就應(yīng)該這樣才能得到正確結(jié)果:

String[] aa = "aaa\bbb\bccc".split(\\);

(6) 還有就是點(diǎn)號".",也要首先轉(zhuǎn)義才能得到正確的結(jié)果。

第一種方法:

string s="abcdeabcdeabcde"; string[] sArray=s.Split('c') ; foreach(string i in sArray) Console.WriteLine(i.ToString()); 輸出下面的結(jié)果: ab deab deab de

第二種方法:

我們看到了結(jié)果是以一個指定的字符進(jìn)行的分割。使用另一種構(gòu)造方法對多個字符進(jìn)行分割:

string s="abcdeabcdeabcde"; string[] sArray1=s.Split(new char[3]{'c','d','e'}) ; foreach(string i in sArray1) Console.WriteLine(i.ToString()); 可以輸出下面的結(jié)果: ab ab ab

第三種方法: 除了以上的這兩種方法以外,第三種方法是使用正則表達(dá)式。新建一個控制臺項(xiàng)目。 然后先添加 using System.Text.RegularExpressions;

using System.Text.RegularExpressions string content=agcsmallmacsmallgggsmallytx; string[] resultString=Regex.Split(content,small,RegexOptions.IgnoreCase) foreach(string i in resultString) Console.WriteLine(i.ToString()); 輸出下面的結(jié)果: 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=”我**師“; 我希望顯示的結(jié)果為:我是一個教師。 我如果采用上面的第四種方法來做就會產(chǎn)生下面的錯誤:我 是一個教師。中間有空格輸出,所以輸出結(jié)果并不是希望的結(jié)果,這就又回到了正則表達(dá)式了,這時(shí)可以采用下面的第五種方法:

string str1=‘我**師“; string[] str2 = System.Text.RegularExpressions.Regex.Split(str1,@[]+); foreach(string i in str2) Console.WriteLine(i.ToString()); 這里通過[]+ 巧妙的完成了我們的目標(biāo)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號