では、Javaでは、( "\ u000A")のような文字列をcharにどのように配置することができますか?その文字列をファイルから取得したので、次のように言うことはできません。char c ='\ u000A';
4 に答える
StringEscapeUtils をチェックする
Java、Java Script、HTML、および XML の文字列をエスケープおよびアンエスケープします。
これはあなたが望むもののために働くはずです
char c = StringEscapeUtils.unescapeJava("\\u000A").charAt(0);
二重バック スラッシュは、Java で「\u000A」をエンコードすることです。
はい、できます。これは完全に有効なコードです。
char c = '\uD840';
あなたのコードの例は、'\u000A'
たまたま無効な Unicode 文字です (おそらく読み取り時のデコードの問題ですか?)。ただし、すべての有効な Unicode 文字を一重引用符で囲むことができます。
余分なライブラリがなければ、これは単なる char の 16 進数値であるという事実を利用できます。この式の値はその文字です:
(char)Integer.parseInt(input.substring(2, 16))
この手法は、サロゲート ペアに対しても機能します。これは、ペアに対して 2 つの個別の \u 表記があるためです。
Oscar Lopez への回答として、これは問題なくコンパイルおよび実行されます。
public class TestUnicode {
static public void main(String[] argv) {
System.out.println("This is one line"); \u000A System.out.println("This is another line");
}
}
理解しておくべき重要な点は、Java コンパイラーでは、文字が文字列リテラルに挿入されるときではなく、プログラムがスキャンされるとき\uXXXX
に文字が変換されるということです (これは他のエスケープの標準です)。上記を に置き換えると、プログラムはコンパイルされませんが、コンパイラは「無効な文字: \92」と報告します (92 は の 10 進値です)。\
\u000A
\n
\