我在如下文件中有一条消息,并且我正在使用com.univocity.parsers.csv.CsvParser
根据分隔符(在本例中为-
)分割字符串
1-bc-“名称” -def-地址
1-abc-“名称定义地址
我创建
之类的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)
如果看到输出,则可以看到第一条消息的字符串已正确分割,但是第二条消息的字符串将所有内容都作为第一个双引号之后的值。有谁知道为什么这样的行为以及如何获得所需的输出?我正在将每条消息作为字符串阅读,应该简单地将引号/双引号视为字符。
答案 0 :(得分:1)
此库的作者在这里。在您的-
分隔符之后找到引号时,解析器将尝试查找结束引号。
最简单的方法是使解析器仅使用以下命令忽略引号:
settings.getFormat().setQuote('\0');
希望有帮助。