字符串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);
}
}
}
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);
}
}
}
相关文章推荐
- PHP、HTML单引号、双引号转义以及…
- 有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!
- 谈字符串_以及单引号与双引号等问题
- linux shell 编程1文件权限检测、字符串比较判断、数值大小比较、时间获取以及单引号双引号反引号等的使用
- 有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!
- 练习1-24: 编写一个程序,查找C语言程序中的基本语法错误,如圆括号,方括号以及花括号不配对等。要正确的处理引号(包括单引号,双引号)~转移字符序列与注释(如果读者想把该程序编写成完全通用的程序,难度会比较大。)
- vb.net如何发送含双引号的字符串。转义双引号
- 有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!
- 有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事
- 有关PHP、HTML单引号、双引号转义以及转成HTML实体的那些事!
- php-addslashes、stripslashes、魔术引号(字符串转义)
- PHP解析单引号字符串中的变量名
- 62、shell转义,单引号与双引号,反撇号
- MFC制作选择文件夹对话框以及通过固定分隔符解析文件名(字符串)
- php-addslashes、stripslashes、魔术引号(字符串转义)
- c/c++解析字符串-加引号
- js、html中的单引号、双引号及其转义使用
- C#如何使用转义字符来正确的表示双引号、单引号等字符串
- 查找C语言中基本语法错误,如小括号,中括号,大括号,单引号,双引号
- js、html中的单引号、双引号及其转义使用(转)