您的位置:首页 > 其它

字符串CSV双引号解析以及双引号和括号转义

2016-11-29 00:00 232 查看
package sdaf;

import java.util.ArrayList;
import java.util.List;

public class Test {

public String transferBracket(String str){
return str.replaceAll("\\(", "\\(\\(").replaceAll("\\)", "\\)\\)");
}

public String[] splitAndDeleteTransferBrancket(String str){
char[] charArray = str.toCharArray();
int index = 0;
for(int i = 1; i < charArray.length-1; i++){
if('(' == charArray[i-1] || '(' == charArray[i+1]){
continue;
}
if('(' == charArray[i]){
index = i;
break;
}
}
String[] result = new String[2];
if(index == 0){
result[0] = str;
return result;
}
result[0] = str.substring(0, index).replaceAll("\\(\\(", "\\(").replaceAll("\\)\\)", "\\)");
result[1] = str.substring(index+1, str.length()-1).replaceAll("\\(\\(", "\\(").replaceAll("\\)\\)", "\\)");
return result;
}

public static String[] dealWithDoubleQuota(String elementStr){
String[] result = elementStr.split("," + "(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
for(int i = 0; i < result.length; i++){
String s = result[i];
s = s.replaceAll("\"\"", "\"");
if(s.startsWith("\"")){
s = s.substring(1, s.length() - 1);
}
result[i] = s;
}
return result;
}

public static String[] dealWithDoubleQuota1(String elementStr){
String[] result = elementStr.split("," + "(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
for(int i = 0; i < result.length; i++){
String s = result[i];
s = s.replaceAll("\"\"", "\"");
if(s.startsWith("\"")){
s = s.substring(0, s.length());
}
result[i] = s;
}
return result;
}

public static void main(String[] args){
/*String elementStr = "sdaf,\"ab,adc\",\"123\",12\",sdf";
String reg="\"(.*?)\"";
Pattern pattern = Pattern.compile(reg);
Matcher matcher = pattern.matcher(elementStr);
while(matcher.find()){
System.out.println(matcher.group());
}*/
/*String elementStr = "sdaf,\"ab,adc\",\"123\"\",12\",sdf";
String[] ss =dealWithDoubleQuota(elementStr);
for (String s : ss){
System.out.println(s);
}*/
/*String a = new Test().transferBracket("rr((,TT)");
String a1 = new Test().transferBracket("U((,S)");
String a2 = new Test().transferBracket("");
for(String s : new Test().splitAndDeleteTransferBrancket(a+"("+a1+")")){
System.out.println(s);
}*/
String elementStr = "\"Government of ,(Austria)\",BRITISH LAND INT'L.,\"WEST\"\", PAC.\",123(123),\"WEST\"\", PAC.\"(\"13\"\",sd\"), ";
//elementStr = "sdaf,\"ab,adc\",\"123\"\",12\",sdf";
String[] ss =dealWithDoubleQuota1(elementStr);
for (String s : ss){
System.out.println(s);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CSV 双引号 圆括号
相关文章推荐