2016-11-15 9 views
1

16進数Stringを指定すると、プログラムでUnicode Stringを作成するにはどうすればよいですか?プログラムでUnicodeを作成しますか?

例:

def f(x: String): String = s"\u$s"

がコンパイルに失敗します。

scala> def f(x: String): String = s"\u$s" 
<console>:1: error: error in unicode escape 
     def f(x: String): String = s"\u$s" 
            ^

私は次のことを試してみましたが、それは失敗しました:

scala> def f(x: String): String = "\\u" + x 
f: (x: String)String 

scala> f("0021") 
res19: String = \u0021 

scala> "\u0021" 
res20: String = ! 

scala> res19 == res20 
res21: Boolean = false 
+0

次のいずれかの質問に回答してください。もしそうなら、1つを受け入れてください –

答えて

2

疑いでJava LIBSに延期すると:

scala> def hexStrToChar(hex: String): Char = Integer.parseInt(hex, 16).toChar 
hexStrToChar: (hex: String)Char 

scala> hexStrToChar("0021") 
res1: Char = ! 
3

コンパイラが使用している正確なコードを呼び出す方法があるかどうかはわかりませんが、自分で実行するだけで十分に簡単です。

文字列を4つのグループに分割し、Integer.parseIntを使用してコードポイントを取得し、それを文字に変換します。

scala> "27640021".grouped(4).map(Integer.parseInt(_, 16).toChar).mkString 
res1: String = ❤! 
関連する問題