Unicode to string conversion in Java

后端 未结 4 1509
孤街浪徒
孤街浪徒 2021-01-03 03:13

I am building a language, a toy language. The syntax \\#0061 is supposed to convert the given Unicode to an character:

String temp = yytext().su         


        
4条回答
  •  余生分开走
    2021-01-03 03:37

    You need to convert the particular codepoint to a char. You can do that with a little help of regex:

    String string = "blah #0061 blah";
    
    Matcher matcher = Pattern.compile("\\#((?i)[0-9a-f]{4})").matcher(string);
    while (matcher.find()) {
        int codepoint = Integer.valueOf(matcher.group(1), 16);
        string = string.replaceAll(matcher.group(0), String.valueOf((char) codepoint));
    }
    
    System.out.println(string); // blah a blah
    

    Edit as per the comments, if it is a single token, then just do:

    String string = "0061";
    char c = (char) Integer.parseInt(string, 16);
    System.out.println(c); // a
    

提交回复
热议问题