① java 分解含有雙引號的字元串
String str = "A,\"1,23,4\",,B";
//首先把"除掉
String []stra = str.split("\"");
int i = 0;
String []temp;
List<String> result = new ArrayList<String>();
for(String s : stra){
//如果是""內的字元串則直接寫入到結果集中,否則分隔,號,獲取子專字元串
if(i % 2 == 0){
temp = s.split(",");
if(temp.length > 0){
for(String ts : temp)
result.add(ts);
}
}else{
result.add(s);
}
i ++;
}
//列印結屬果集
for(String s : result){
System.out.println(s);
}
運行結果為
A
1,23,4
B
② 關於String類的split()方法
split方法:將一個字元串分割為子字元串,然後將結果作為字元串數組返回。
split方法參數為stringObj.split([separator,[limit]])
stringObj(必選項) ,指要被分解的String對象或文字。該對象不會被split方法修改。
separator(可選項),指字元串或正則表達式對象,它標識了分隔字元串時使用的是一個還是多個字元。如果忽略該選項,返回包含整個字元串的單一元素數組。
limit(可選項)該值用來限制返回數組中的元素個數。
說明 :
split方法的結果是一個字元串數組,在stingObj中每個出現separator的位置都要進行分解。
例:StringoldStr="z,,,z";
String[]strs=oldStr.split(",");
for(Stringstr:strs){
System.out.println(str); }
(2)javasplit空串擴展閱讀
String類的split()方法的正確寫法:
1、如果用「.」作為分隔的話,必須是如下寫法:String.split("\."),這樣才能正確的分隔開,不能用String.split(".");。
2、如果用「|」作為分隔的話,必須是如下寫法:String.split("\|"),這樣才能正確的分隔開,不能用String.split("|");「.」和「|」都是轉義字元,必須得加"\";(這里是利用了java中正則表達式的一個點)。
3、如果在一個字元串中有多個分隔符,可以用「|」作為連字元,比如:「a=1 andb =2 or c=3」,把三個都分隔出來,可以用String.split("and|or");。
③ java split問題,字元串「1#2#3#4」和「1#2#3#4#」,按「#」分割,後一個字元串最後一個"#"不會被分割
默認的split方法這兩個字元串的分割結果是一樣的 ,空串被忽略
使用split(regex,int limit)重載方法,第二個參數限定分割字串的最大值
split("1#2#3#4#",5)結果會包括最後一個空串,split("1#2#3#4",5),與不使用第二個參數結果一致
④ java.lang.String的split()方法問題
split參數是個正則表達式.
如果用patter+matcher去檢查,實際匹配結果如下
0,1
2,3
3,4
4,5
6,7
7,8
8,9
9,10
即命中9次.
但從數字3開始後的命中在看來都是無效的,因為截取出來的內容是"",split方法將剔除尾部非空後的所有空格串(0長度).這個你可以看split源碼(Pattern.class) 第1024行看到.
if(limit==0)
while(resultSize>0&&matchList.get(resultSize-1).equals(""))
resultSize--;
///就在這里,尾部的0長度字元串都被剔除了.
String[]result=newString[resultSize];
因此結果為[,*,,,3],命中5次.
so,有些場合,這樣去split是不合適的.
正確的split調用, 應該這樣:
String[] xx = x.split("[1]",-1); //不限制空命中.
這樣出來的 xx 的數組, 就是9個. 如下圖:
⑤ org.apache.commons.lang.StringUtils的jar包是什麼
commons-lang-2.5.jar
名字大概是這個,具體的版本是不是2.5要看你工程框架或JDK的版本,要試試才知道。