Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I convert a string containing a character escape sequence into a char?

I'm looking for a way to convert a string that contains a character escape sequence into the represented character.

So, for instance, I want to parse the string \" (which has two characters, a backslash and a double-quote) into the char ". So, an array of chars into one char.

So something that might do something like this and vice versa:

package test;
public class Test {
    private static char parseChar(String string) {
        char c = 0;
        if ("\\n".equals(string)) {
            c = '\n';
        }else if ("\\t".equals(string)) {
            c = '\t';
        }else if ("\\r".equals(string)) {
            c = '\r';
        }else if ("\\f".equals(string)) {
            c = '\f';
        }else if ("\\b".equals(string)) {
            c = '\b';
        }else if ("\\\'".equals(string)) {
            c = '\'';
        }else if ("\\\"".equals(string)) {
            c = '\"';
        }else if ("\\\\".equals(string)) {
            c = '\\';
        }
        return c;
    }
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg + " : " + (int)parseChar(arg) + " : " + parseChar(arg) + ";");
        }
    }
}

I could not believe there is nothing in java.lang or other that can provide me with good (maybe native) code for this because I feel the above code might be incomplete and not parse every problematic (escapable?) character, because well I'm a noob. I want a tool that can do the same thing as the String constructor :

String st = "\"";
char ch = st.charAt(0);

ch output : ";

Thank you for reading this, I am sorry if not clear I will check regularly and correct if asked.

PS:

When I run the above code:

java -classpath ~/workspace/MacroRecorder/bin/ test.Test \\n \\t \\f \\r \\b \\\' \\\" \\\\;

...it outputs

\n : 10 : 
;
\t : 9 :    ;
\f : 12 : 
          ;
;r : 13 : 
\b : 8 :;
\' : 39 : ';
\" : 34 : ";
\\ : 92 : \;

But in Eclipse, the output is completely different with the same parameters especially the " is very messy.

like image 225
sinekonata Avatar asked Jan 05 '12 00:01

sinekonata


People also ask

How do I convert a string to a char?

We can convert String to char in java using charAt() method of String class. The charAt() method returns a single character only.

How do I print an escape character in a string?

, \t, \r, etc., What if we want to print a string which contains these escape characters? We have to print the string using repr() inbuilt function. It prints the string precisely what we give.

How do you ignore an escape character?

To ignore all the escape sequences in the string, we have to make a string as a raw string using 'r' before the string. After that escape sequence will also be considered normal characters.


1 Answers

Apache Commons to the rescue with StringEscapeUtils, you want the unescapeJava method I think: http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.lang.String)

like image 60
Dan Hardiker Avatar answered Oct 11 '22 15:10

Dan Hardiker