Как заменить запятые в моей строке, не затрагивая запятые в моем CSV-файле? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть набор данных, который я загружаю со строками, и он содержит что-то вроде этого:

"10, 14, 15," 20,152 ", 37," 42,167 ", 22"

Как я могу использовать Java для анализа данных, чтобы запятые внутри кавычек были безопасно удалены и другие запятые не затрагивались?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Предполагая, что вы хотите сохранить кавычки, что-то вроде этого будет работать.Если нет, то вы можете немного его отредактировать, чтобы убрать кавычки.

public String process(String input) {
    StringBuilder result = new StringBuilder();
    boolean insideDoubleQuotes = false;
    for (char currentCharacter : input.toCharArray()) {

      if (currentCharacter == '"') {
        insideDoubleQuotes = !insideDoubleQuotes;
      } else if (currentCharacter == ',' && insideDoubleQuotes) {
        continue;
      }

      result.append(currentCharacter);
    }

    return result.toString();
  }
0 голосов
/ 04 марта 2019

Попробуйте это:

import java.util.ArrayList;

public class Main {

    public static void main(String args[]) {
        String input = "'10,11', '12,14', 15, '20,152', 37, '42,167', 22"; //
        String[] list = input.split("'"); // Split the string using "'" as delimeter(change it to quotation mark)
        ArrayList<String> elements = new ArrayList<>();
        for (int i = 0; i < list.length; i++) {
                        // condition to check if it is outside/outside the quotation mark
            if (i % 2 != 0) {  // if inside a quotation mark
                if (!list[i].trim().isEmpty()) { // so that spaces will not be included
                    elements.add(list[i].trim()); // add the element to the list
                }
            } else { //if outside the quotation marks
                String[] tmp = list[i].split(","); // split the regular comma separated values
                for (String s : tmp) { // iterate each splits
                    if (!s.trim().isEmpty()) { // check for spaces
                        elements.add(s.trim()); // add element to the list
                    }
                }
            }
        }

        for (String s : elements) {
            System.out.println(s);
        }
    }

}
...