字符串分割--java中String.split()用法
文章轉自:http://yangzb.iteye.com/blog/1824761
在java.lang包中有String.split()方法,返回是一個數組。
? 1、 “.”和“|”都是轉義字符,必須得加"\\";如果用“.”作為分隔的話,必須是如下寫法:
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)根據匹配給定的正則表達式來拆分此字符串。
此方法返回的數組包含此字符串的每個子字符串,這些子字符串由另一個匹配給定的表達式的子字符串終止或由字符串結束來終止。數組中
的子字符串按它們在此字符串中的順序排列。如果表達式不匹配輸入的任何部分,則結果數組只具有一個元素,即此字符串。
4、public string[] split(string regex)
這里的參數的名稱是 regex ,也就是 regular expression (正則表達式)。這個參數并不是一個簡單的分割用的字符,而是一個正則表達式,
他對一些特殊的字符可能會出現你預想不到的結果,比如測試下面的代碼:?
(1) 用豎線 | 分隔字符串,你將得不到預期的結果?
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異常,用加號 + 也是如此。?
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?s="abcdeabcdeabcde";
string[]?sArray1=s.Split(newchar[3]{'c','d','e'});
foreach(string?i?in?sArray1)Console.WriteLine(i.ToString());
ab?
ab?
ab?
第三種方法:?
除了以上的這兩種方法以外,第三種方法是使用正則表達式。新建一個控制臺項目。
然后先添加 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());
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());
總結
以上是生活随笔為你收集整理的字符串分割--java中String.split()用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSP JAVA 自定义 错误页面(40
- 下一篇: ContextMenu长按事件