java根据逗号拆分_Java不规则字符串按照逗号分割的解析⽅java中split的用法
法(字段中⼜含有逗号)...
/*** Java字符串逗号分割解析⽅法
* 本专门针对双引号中还有逗号或者某个字段⽆双引号的情况⽽设计的
* 例如要将 字符串 String sss="101,\"a\",\"中国,江苏\",\"b\",\"中国,北京\",1,0,\"c\""按照逗号进⾏分割解析;
* 正确的split的结果是 (101)(a)( 中国,江苏) ( b)( 中国,北京) ( 1)( 0)( c)
* 如果⽤java的split⽅法的话,当遇到(中国,北京)这些字段值时就会多分割了⼀个字段出来,就不正确了,同时,上⾯的101 ,1,0都不带要双引号
* 我们期望的理想字符串当然都是带双引号的字段值组成的字符串了,但是发⽣上⾯的情况时我们感觉很恼⽕
* 以上就是本⽅法设计的初衷,其实这⽅法是⼤学课本数据结构中的提到的,在此⽤Java实现了⼀下,但是⽅法执⾏的效率我还没有测试
* 如果谁有更好的⽅法欢迎加⼊讨论O(∩_∩)O~
*@authorHsuChan
*@version2014-11-30 22:30
*@paramsss
*@returnString []*/
publicString [] commaDivider(String sss){//双引号开始标记
int qutationStart =0;//双引号结束标记
int qutationEnd =0;char[] charStr =CharArray();//⽤于拼接字符 作为⼀个字段值
StringBuffer sbf = newStringBuffer();//结果list
List list = new ArrayList();//逐个字符处理
for(int i=0;i
if(qutationStart == 0&&charStr[i] == ‘\"‘) {
qutationStart= 1;
qutationEnd= 0;continue;
}else if(qutationStart == 1&&charStr[i] == ‘\"‘){//在此之前遇到了双引号并且当前的字符为\" 说明字段拼接该结束了
qutationStart= 0;
qutationEnd= 1;//当最后⼀个字符是双引号时,由于下次循环不会执⾏,所以在此保存⼀下
if(i == charStr.length-1&&sbf.length() != 0) {
list.String());
sbf.setLength(0);
}continue;
}else if(qutationStart == 1&&charStr[i] == ‘,‘&&qutationEnd == 0) {//处理 \"中国,北京\"这种不规范的字符串
sbf.append(charStr[i]);continue;
}else if(charStr[i] == ‘,‘) {//字段结束,将拼接好的字段值存到list中
list.String());
sbf.setLength(0);continue;
}//不属于分隔符的就拼接
sbf.append(charStr[i]);if(i == charStr.length-1&&sbf.length()!=0) { list.String());
sbf.setLength(0);
}
}return (String[])Array(newString[list.size()]);
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论