Commons lang StringEscapeUtils.unescapeCsv不会删除引号

时间:2016-04-04 09:18:03

标签: java apache-commons

“StringEscapeUtils.unescapeCsv”的定义说它删除了双引号,但在我的情况下,它什么也没做。

String value = StringEscapeUtils.unescapeCsv(a[1]  );

1的值=“\”呼叫我们\“”,结果值为“\”致电我们\“”)

如果您不相信,请参阅调试器屏幕。这只是一个错误吗? enter image description here

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()