Заменить кавычки в строке - PullRequest
0 голосов
/ 19 июня 2019

Я должен заменить все запятые между двойными кавычками на точки. Я пытаюсь сделать это с помощью метода replace и replaceAll в Java. Но я все еще не выбрал решение. Кто-нибудь может мне помочь?

EDIT: Я должен вручную разобрать файл CSV для объекта. Поэтому я пытаюсь разбить строку на каждую строку ввода, но внутри одного числа запятая, поэтому я получаю больше данных, чем нужно для разделения. Пример: я должен разделить эту строку.

"" "LASER MEDIA SOCIETA 'COOPERATIVA" "", CNF146010, FM (S), PIAZZA UMBERTO I - PISTICCI, MT, 40N2323,16E3328,383 ,, "99,1", CITY RADIO, "H: - -V: 32 дБВт ", 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: для входной строки: ""

1 Ответ

0 голосов
/ 19 июня 2019

Вы будете изо всех сил пытаться сделать это с одной заменойВсе или заменой, поскольку вам нужно определить пары кавычек.Лучше всего подбирать пары кавычек и использовать 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...