Регулярное выражение для удаления разрыва строки в двойных кавычках в CSV - PullRequest
0 голосов
/ 13 июля 2020

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

"AHLR150","CDS","-1","MDCPBusinessRelationshipID",,,"Investigating","1600 Amphitheatre Pkwy

California",,"Mountain View",,"United States",,"California",,,"94043-1351","9958"

две приведенные выше строки должны быть в одной строке

"AHLR150","CDS","-1","MDCPBusinessRelationshipID",,,"Investigating","1600 Amphitheatre PkwyCalifornia",,"Mountain View",,"United States",,"California",,,"94043-1351","9958"

Я пытался использовать приведенное ниже регулярное выражение, но мне это не помогло

%s/\\([^\"]\\)\\n/\\1/

Ответы [ 2 ]

0 голосов
/ 14 августа 2020

Попробуйте следующее:

public static void main(String[] args) {
    String input = "\"AHLR150\",\"CDS\",\"-1\",\"MDCPBusinessRelationshipID\","
            + ",,\"Investigating\",\"1600 Amphitheatre Pkwy\n"
            + "California\",,\"Mountain View\",,\"United\n"
            + "States\",,\"California\",,,\"94043-1351\",\"9958\"\n";

    Matcher matcher = Pattern.compile("\"([^\"]*[\n\r].*?)\"").matcher(input);
    Pattern patternRemoveLineBreak = Pattern.compile("[\n\r]");

    String result = input;
    while(matcher.find()) {
        String quoteWithLineBreak = matcher.group(1);
        String quoteNoLineBreaks = patternRemoveLineBreak.matcher(quoteWithLineBreak).replaceAll(" ");
        result = result.replaceFirst(quoteWithLineBreak, quoteNoLineBreaks);
    }

    //Output
    System.out.println(result);
}

Вывод:

"AHLR150","CDS","-1","MDCPBusinessRelationshipID",,,"Investigating","1600 Amphitheatre Pkwy California",,"Mountain View",,"United States",,"California",,,"94043-1351","9958"
0 голосов
/ 13 июля 2020

На основе этого вы можете попробовать:

/\r?\n|\r/

Я проверил здесь и вроде все нормально

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...