我需要用分号拆分和替换字符串。我需要找到String中的所有分号。
我有一些字符串或与此相似:
"003628;164332;BICICLETA;000000;\"TI;EH.55; MARC;E: 8ʽ7,7542;9ʽ2;,4)\"2015-03-03 12:25:25.0;2016-03-10 09:13:35.0"
这是我的代码:
String p = "(\"[^\"]+);([^\"]+\")"
String cad = "003628;164332;BICICLETA;000000;\"TI;EH.55; MARC;E: 8ʽ7,7542;9ʽ2;,4)\"2015-03-03 12:25:25.0;2016-03-10 09:13:35.0"
Pattern pat = Pattern.compile(p)
Matcher mat = pat.matcher(cad)
cad.replaceAll(p, "$1#SEMICOLON#$2")
错误的结果是:
003628;164332;BICICLETA;000000;"TI;EH.55; MARC;E: 8ʽ7,7542;9ʽ2#SEMICOLON#,4)"2015-03-03 12:25:25.0;2016-03-10 09:13:35.0
正确的结果应该是:
003628;164332;BICICLETA;000000;"TI#SEMICOLON#EH.55#SEMICOLON# MARC#SEMICOLON#E: 8ʽ7,7542#SEMICOLON#9ʽ2#SEMICOLON#,4)"2015-03-03 12:25:25.0;2016-03-10 09:13:35.0
我的代码出了什么问题?我无法弄清楚。
答案 0 :(得分:0)
您可以在没有正则表达式的情况下达到此目的:
String cad = "003628;164332;BICICLETA;000000;\"TI;EH.55; MARC;E: 8ʽ7,7542;9ʽ2;,4)\"2015-03-03 12:25:25.0;2016-03-10 09:13:35.0";
String[] array = cad.split("\"");
for(int j = 1; j<array.length; j+=2)
{
array[j] = array[j].replaceAll(";", "#SEMICOLON#");
}
System.out.println(String.join("", array));
结果:
003628; 164332; BICICLETA; 000000; TI#SEMICOLON#EH.55 #SEMICOLON#MARC #SEMICOLON #E:8'7,7542 #SEMICOLON#9'2#SEMICOLON#,4)2015-03-03 12:25:25.0 ; 2016-03-10 09:13:35.0