“StringEscapeUtils.unescapeCsv”的定义说它删除了双引号,但在我的情况下,它什么也没做。
String value = StringEscapeUtils.unescapeCsv(a[1] );
(1的值=“\”呼叫我们\“”,结果值为“\”致电我们\“”)
答案 0 :(得分:-1)
这不是一个错误。它完全按照预期工作。 documentation州:
如果值用双引号括起来,并且包含逗号,换行符或双引号,则会删除引号。
这意味着在以下情况下会删除周围的双引号:
StringEscapeUtils.unescapeCsv("\"Call \n us!\""); // -> Call \n us!
StringEscapeUtils.unescapeCsv("\"Call, us!\""); // -> Call, us!
StringEscapeUtils.unescapeCsv("\"Call \" us!\""); // -> Call " us!
但在您的情况下,以下情况属实:
如果该值未包含在双引号中,或者是否包含逗号,换行符或双引号,则返回String值不变。
这意味着不会删除周围的双引号:
StringEscapeUtils.unescapeCsv("\"Call us!\""); // -> "Call us!"
您应该使用适当的CSV解析器,例如Apache Commons CSV,而不是依赖String.split()
和StringEscapeUtils.unescapeCsv()
。