Mega Code Archive

 
Categories / Java / Reflection
 

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