在双引号JAVA之间找到分号

时间:2016-04-28 10:42:11

标签: java

我需要用分号拆分和替换字符串。我需要找到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

我的代码出了什么问题?我无法弄清楚。

1 个答案:

答案 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