1

では、Javaでは、( "\ u000A")のような文字列をcharにどのように配置することができますか?その文字列をファイルから取得したので、次のように言うことはできません。char c ='\ u000A';

4

4 に答える 4

3

StringEscapeUtils をチェックする

Java、Java Script、HTML、および XML の文字列をエスケープおよびアンエスケープします。

これはあなたが望むもののために働くはずです

char c = StringEscapeUtils.unescapeJava("\\u000A").charAt(0);

二重バック スラッシュは、Java で「\u000A」をエンコードすることです。

于 2012-11-09T21:04:44.953 に答える
1

はい、できます。これは完全に有効なコードです。

char c = '\uD840';

あなたのコードの例は、'\u000A'たまたま無効な Unicode 文字です (おそらく読み取り時のデコードの問題ですか?)。ただし、すべての有効な Unicode 文字を一重引用符で囲むことができます。

于 2012-11-09T21:01:12.080 に答える
0

余分なライブラリがなければ、これは単なる char の 16 進数値であるという事実を利用できます。この式の値はその文字です:

(char)Integer.parseInt(input.substring(2, 16))

この手法は、サロゲート ペアに対しても機能します。これは、ペアに対して 2 つの個別の \u 表記があるためです。

于 2012-11-09T21:28:53.587 に答える
0

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\

于 2012-11-10T00:51:10.553 に答える