Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 替换字符串中的引号_Java_Regex_String_Replace - Fatal编程技术网

Java 替换字符串中的引号

Java 替换字符串中的引号,java,regex,string,replace,Java,Regex,String,Replace,我必须用点替换双引号之间的所有逗号。 我正试图用replace和replacealljava的方法来实现这一点。但我仍然没有找到解决办法。 有人能帮我吗 编辑: 我必须手动将csv文件解析为对象。所以我尝试对每个输入行进行字符串拆分,但其中一个数字有一个逗号,所以我得到的数据比拆分所需的数据多。 我必须拆分这个字符串 激光媒体协会,CNF146010,FM S,安贝托广场一号-皮斯蒂奇,MT,40N2323,16E3328383,99,1,城市广播,H:-V:32 dBW,0.0 请注意,我有9

我必须用点替换双引号之间的所有逗号。 我正试图用replace和replacealljava的方法来实现这一点。但我仍然没有找到解决办法。 有人能帮我吗

编辑: 我必须手动将csv文件解析为对象。所以我尝试对每个输入行进行字符串拆分,但其中一个数字有一个逗号,所以我得到的数据比拆分所需的数据多。 我必须拆分这个字符串

激光媒体协会,CNF146010,FM S,安贝托广场一号-皮斯蒂奇,MT,40N2323,16E3328383,99,1,城市广播,H:-V:32 dBW,0.0

请注意,我有99,1和之前的、,这会给我带来麻烦

Scanner var = new Scanner(new BufferedReader(new FileReader ("t1.csv")));
     ArrayList<Catasto> obj = new ArrayList();
     String data = var.nextLine();
     String data2 = null;
     String full = null;
     int j = 0;
     while (var.hasNextLine()) {
         data = var.nextLine();
         data2 = var.nextLine();
         full = data + data2;
         //full = full.replaceAll("\"*[,]*\"", "."); attempt 1
         System.out.println(full);
         ArrayList<String> parts = new ArrayList();
         String[] parti = full.split(",");
         //for (int i = 0; i<parti.length; i++) {  this is because I'm trying to change empty string with a null
         //if (parti[i] == " ")                    in order to solve this error: java.lang.NumberFormatException: For input string: ""
         //      parti[i] = null;                  
         //}
         for (int i = 0; i<12; i++) {
                 parts.add(parti[i]);
         }
         Catasto foo = new Catasto(parts);
         obj.add(foo);
    }
     var.close();
编辑2:
我已经解决了双引号之间的逗号问题。但是我不知道为什么会出现错误:java.lang.NumberFormatException:对于输入字符串:

您将很难使用单个replaceAll或replace来完成,因为您需要确定引号对。最好匹配引号对,并使用replaceAll将逗号改为句号

   String input = "\"One,Two,There\",\"Four,Five,Six\"";

   Matcher m = Pattern.compile("\"[^\"]*\"").matcher(input);
   StringBuffer sb = new StringBuffer();
   while(m.find()) {
       m.appendReplacement(sb, m.group().replaceAll(",", "."));
   }
   m.appendTail(sb);

   String output = sb.toString(); // "One.Two.There","Four.Five.Six"

您当前的解决方案遇到了什么问题?显示一些代码以了解问题所在wrong@BugsForBreakfast在这里is@Lauqz那个数字格式异常是因为你不能转换成数字,必须做点什么谢谢你Bugs,我解决了它!:谢谢,这是正确的。你能帮我解决上面的第二个问题吗?我真的很挣扎