① 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的版本,要试试才知道。