CsvParser 不适用于缺少双引号

CsvParser not working for missing double quotes

我在文件中有一条消息,如下所示,我正在使用 com.univocity.parsers.csv.CsvParser 根据分隔符拆分字符串(在本例中为 -

1-bc-"name"-def-address

1-abc-"name-def-address

我创建我的 CsvParser 对象

private val settings = new CsvParserSettings()
settings.getFormat.setDelimiter('-')
settings.setIgnoreLeadingWhitespaces(true)
settings.setIgnoreTrailingWhitespaces(true)
settings.setReadInputOnSeparateThread(false)
settings.setNullValue("")
settings.setMaxCharsPerColumn(-1)
val parser = new CsvParser(settings)

并像这样解析输入消息:

    for (line <- Source.fromFile("path\test.txt").getLines) {
  println(parser.parseLine(line).toList)
}

输出为:

List(1, bc, name, def, address)
List(1, abc, name-def-address)

如果您看到输出,您可以看到对于第一条消息,字符串被正确拆分,但是对于第二条消息,它在第一个双引号之后将所有内容作为值。有谁知道为什么行为是这样的,我怎样才能得到想要的输出?我正在阅读每条消息作为一个字符串,它应该简单地将 quote/double 引号视为一个字符。

这里是这个库的作者。当在 - 定界符之后找到引号时,解析器将尝试查找结束引号。

最简单的解决方法是让解析器简单地忽略引号:

settings.getFormat().setQuote('[=10=]');

希望对您有所帮助。