Escape Java Literal
/* * Static String formatting and query routines. * Copyright (C) 2001-2005 Stephen Ostermiller * http://ostermiller.org/contact.pl?regarding=Java+Utilities * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * See COPYING.TXT for details. */ import java.util.HashMap; import java.util.regex.Pattern; /** * Utilities for String formatting, manipulation, and queries. * More information about this class is available from <a target="_top" href= * "http://ostermiller.org/utils/StringHelper.html">ostermiller.org</a>. * * @author Stephen Ostermiller http://ostermiller.org/contact.pl?regarding=Java+Utilities * @since ostermillerutils 1.00.00 */ public class StringHelper { /** * Replaces characters that are not allowed in a Java style * string literal with their escape characters. Specifically * quote ("), single quote ('), new line (\n), carriage return (\r), * and backslash (\), and tab (\t) are escaped. * * @param s String to be escaped * @return escaped String * @throws NullPointerException if s is null. * * @since ostermillerutils 1.00.00 */ public static String escapeJavaLiteral(String s){ int length = s.length(); int newLength = length; // first check for characters that might // be dangerous and calculate a length // of the string that has escapes. for (int i=0; i<length; i++){ char c = s.charAt(i); switch(c){ case '\"': case '\'': case '\n': case '\r': case '\t': case '\\':{ newLength += 1; } break; } } if (length == newLength){ // nothing to escape in the string return s; } StringBuffer sb = new StringBuffer(newLength); for (int i=0; i<length; i++){ char c = s.charAt(i); switch(c){ case '\"':{ sb.append("\\\""); } break; case '\'':{ sb.append("\\\'"); } break; case '\n':{ sb.append("\\n"); } break; case '\r':{ sb.append("\\r"); } break; case '\t':{ sb.append("\\t"); } break; case '\\':{ sb.append("\\\\"); } break; default: { sb.append(c); } } } return sb.toString(); } }