java中String.split()用法

2018-08-02 18:09 更新

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

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

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

2.split()用法

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

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

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

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

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

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

此方法返回的數(shù)組包含此字符串的每個(gè)子字符串,這些子字符串由另一個(gè)匹配給定的表達(dá)式的子字符串終止或由字符串結(jié)束來(lái)終止。數(shù)組中 的子字符串按它們?cè)诖俗址械捻樞蚺帕小H绻磉_(dá)式不匹配輸入的任何部分,則結(jié)果數(shù)組只具有一個(gè)元素,即此字符串。

  4、public string[] split(string regex)

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

(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異常,用加號(hào) + 也是如此。

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"這個(gè)串就應(yīng)該用"aaaa\bbbb",如果要分隔就應(yīng)該這樣才能得到正確結(jié)果:

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

(6) 還有就是點(diǎn)號(hào)".",也要首先轉(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é)果是以一個(gè)指定的字符進(jìn)行的分割。使用另一種構(gòu)造方法對(duì)多個(gè)字符進(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á)式。新建一個(gè)控制臺(tái)項(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="我個(gè)師"; string[] str2; str1=str1.Replace("","") ; str2=str1.Split(’‘) ; foreach(string i in str2) Console.WriteLine(i.ToString());

第五種方法:

string str1=”我**個(gè)師“; 我希望顯示的結(jié)果為:我是一個(gè)教師。 我如果采用上面的第四種方法來(lái)做就會(huì)產(chǎn)生下面的錯(cuò)誤:我 是一個(gè)教師。中間有空格輸出,所以輸出結(jié)果并不是希望的結(jié)果,這就又回到了正則表達(dá)式了,這時(shí)可以采用下面的第五種方法:

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)