diff --git a/src/java/org/apache/commons/lang/StringEscapeUtils.java b/src/java/org/apache/commons/lang/StringEscapeUtils.java index 167d9b693..cc0f4e38c 100644 --- a/src/java/org/apache/commons/lang/StringEscapeUtils.java +++ b/src/java/org/apache/commons/lang/StringEscapeUtils.java @@ -40,7 +40,9 @@ */ public class StringEscapeUtils { - private static final char[] CSV_SEARCH_CHARS = new char[] {',', '"', CharUtils.CR, CharUtils.LF}; + private static final char CSV_DELIMITER = ','; + private static final char CSV_QUOTE = '"'; + private static final char[] CSV_SEARCH_CHARS = new char[] {CSV_DELIMITER, CSV_QUOTE, CharUtils.CR, CharUtils.LF}; /** *

StringEscapeUtils instances should NOT be constructed in @@ -718,17 +720,15 @@ public static String escapeCsv(String str) { if (StringUtils.containsNone(str, CSV_SEARCH_CHARS)) { return str; } - StringBuffer buffer = new StringBuffer(str.length() + 10); - buffer.append('"'); - for (int i = 0; i < str.length(); i++) { - char c = str.charAt(i); - if (c == '"') { - buffer.append('"'); // escape double quote - } - buffer.append(c); + try { + StringWriter writer = new StringWriter(); + escapeCsv(writer, str); + return writer.toString(); + } catch (IOException ioe) { + // this should never ever happen while writing to a StringWriter + ioe.printStackTrace(); + return null; } - buffer.append('"'); - return buffer.toString(); } /** @@ -761,15 +761,15 @@ public static void escapeCsv(Writer out, String str) throws IOException { } return; } - out.write('"'); + out.write(CSV_QUOTE); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); - if (c == '"') { - out.write('"'); // escape double quote + if (c == CSV_QUOTE) { + out.write(CSV_QUOTE); // escape double quote } out.write(c); } - out.write('"'); + out.write(CSV_QUOTE); } }