Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * *************************************************************************************
   *  Copyright (C) 2008 EsperTech, Inc. All rights reserved.                            *
   *  http://esper.codehaus.org                                                          *
   *  http://www.espertech.com                                                           *
   *  ---------------------------------------------------------------------------------- *
   *  The software in this package is published under the terms of the GPL license       *
   *  a copy of which has been included with this distribution in the license.txt file.  *
   * *************************************************************************************
  */
 
 package com.espertech.esperio.socket.core;
 
 public class UnescapeUtil {

    
Unescapes a string that contains standard Java escape sequences.
  • \b \f \n \r \t \" \' : BS, FF, NL, CR, TAB, double and single quote.
  • \X \XX \XXX : Octal character specification (0 - 377, 0x00 - 0xFF).
  • \uXXXX : Hexadecimal based Unicode character.

Parameters:
st A string optionally containing standard java escape sequences.
Returns:
The translated string.
 
     public static String unescapeJavaString(String st) {
 
         StringBuilder sb = new StringBuilder(st.length());
 
         for (int i = 0; i < st.length(); i++) {
             char ch = st.charAt(i);
             if (ch == '\\') {
                 char nextChar = (i == st.length() - 1) ? '\\' : st
                         .charAt(i + 1);
                 // Octal escape?
                 if (nextChar >= '0' && nextChar <= '7') {
                     String code = "" + nextChar;
                     i++;
                     if ((i < st.length() - 1) && st.charAt(i + 1) >= '0'
                             && st.charAt(i + 1) <= '7') {
                         code += st.charAt(i + 1);
                         i++;
                         if ((i < st.length() - 1) && st.charAt(i + 1) >= '0'
                                 && st.charAt(i + 1) <= '7') {
                             code += st.charAt(i + 1);
                             i++;
                         }
                     }
                     sb.append((char) Integer.parseInt(code, 8));
                     continue;
                 }
                 switch (nextChar) {
                     case '\\':
                         ch = '\\';
                         break;
                     case 'b':
                         ch = '\b';
                         break;
                     case 'f':
                         ch = '\f';
                         break;
                     case 'n':
                         ch = '\n';
                         break;
                     case 'r':
                         ch = '\r';
                         break;
                     case 't':
                         ch = '\t';
                         break;
                     case '\"':
                         ch = '\"';
                         break;
                     case '\'':
                         ch = '\'';
                         break;
                     // Hex Unicode: u????
                     case 'u':
                         if (i >= st.length() - 5) {
                             ch = 'u';
                             break;
                         }
                         int code = Integer.parseInt(
                                 "" + st.charAt(i + 2) + st.charAt(i + 3)
                                         + st.charAt(i + 4) + st.charAt(i + 5), 16);
                         sb.append(Character.toChars(code));
                         i += 5;
                         continue;
                 }
                 i++;
             }
             sb.append(ch);
         }
         return sb.toString();
     }
New to GrepCode? Check out our FAQ X