Author: echatellier Date: 2013-10-11 11:14:01 +0200 (Fri, 11 Oct 2013) New Revision: 2605 Url: http://nuiton.org/projects/nuiton-utils/repository/revisions/2605 Log: fixes #2873: escapeCsvValue don't escape string containing quote " Modified: trunk/src/main/java/org/nuiton/util/StringUtil.java trunk/src/test/java/org/nuiton/util/StringUtilTest.java Modified: trunk/src/main/java/org/nuiton/util/StringUtil.java =================================================================== --- trunk/src/main/java/org/nuiton/util/StringUtil.java 2013-08-23 13:03:33 UTC (rev 2604) +++ trunk/src/main/java/org/nuiton/util/StringUtil.java 2013-10-11 09:14:01 UTC (rev 2605) @@ -71,7 +71,7 @@ } /** - * Add cotes if needed to escape special csv chars (',', '\n', '\t', ',', ';') + * Add quotes if needed to escape special csv chars (',', '\n', '\t', ',', ';', '"') * * @param value to escape * @param csvSeparator separator used for csv @@ -84,6 +84,7 @@ || value.contains("\t") || value.contains(",") || value.contains(";") + || value.contains("\"") || value.contains(csvSeparator); if (valueNeedQuotes) { Modified: trunk/src/test/java/org/nuiton/util/StringUtilTest.java =================================================================== --- trunk/src/test/java/org/nuiton/util/StringUtilTest.java 2013-08-23 13:03:33 UTC (rev 2604) +++ trunk/src/test/java/org/nuiton/util/StringUtilTest.java 2013-10-11 09:14:01 UTC (rev 2605) @@ -36,17 +36,18 @@ package org.nuiton.util; -import org.junit.Test; - -import java.awt.*; -import java.util.Arrays; -import java.util.Locale; - import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import java.awt.Color; +import java.util.Arrays; +import java.util.Locale; + +import org.junit.Assert; +import org.junit.Test; + public class StringUtilTest { private static final String[] EMPTY_STRING_ARRAY = new String[0]; // StringUtilTest @@ -234,5 +235,17 @@ assertTrue(StringUtil.isEmail("abC.Def+Ghi@Monte.SSt")); assertTrue(StringUtil.isEmail("abC.Def+Ghi@Monte.SST")); } + + /** + * Test les cas d'échapement des caracteres speciaux csv. + */ + @Test + public void testEscapeCsvValue() { + Assert.assertEquals("allo ?", StringUtil.escapeCsvValue("allo ?", ";")); + Assert.assertEquals("\"action;réaction\"", StringUtil.escapeCsvValue("action;réaction", ";")); + Assert.assertEquals("\"cause, effet\"", StringUtil.escapeCsvValue("cause, effet", ";")); + Assert.assertEquals("\"tee|/dev/null\"", StringUtil.escapeCsvValue("tee|/dev/null", "|")); + Assert.assertEquals("\"\"\"Amazing\"\" spiderman\"", StringUtil.escapeCsvValue("\"Amazing\" spiderman", ";")); + } } // StringUtilTest