2017-09-21 6 views
-5

私はこの質問とその答えをここで読む: Java: Convert String “\uFFFF” into char。 この質問は、私が必要とするものに非常に近いものの、私の要求に答えるものではありません。Java:UTF表現の文字列を単一のUTF Charに変換しますか?

文字列がString ori = new String("\"" + "\u" + n + "\"");で構成されている場合はどうなりますか?nはInteger.toString(i)によって形成される文字列です。ここで、iはintですか?この文字列変数oriはどのようにしてUnicode文字に変換できますか?その場合 String n = Integer.toString(i);n = "0000".substring(n.length()) + n;

、それらの応答が調節される方法を次のよう

nまで私から鎖でありますか?たとえば、 char c = "\uFFFF".toCharArray()[0];

チェックしました。上記のコードは、次のように置き換えることはできません:char c = ori.toCharArray()[0]; coversionはプログラム内にあるため、表示されている値をハードコーディングします。 char c = '\uFFFF';は自分のコードでは使用できません。

Character and Byte Streamsと、プログラム例StreamConverter.javaを見ることができます。ストリーム "\ u65e5 \ u672c \ u8a9e \ u6587 \ u5b57 \ u5217"を自分のエントリ(たとえば "\ u005a")に置き換え、コンソールとGUIの両方に文字Zを使用します。

また、プログラムとstringConverter.javaを参照してください。ここでは、6要素の整数文字列のそれぞれがUTF文字に置き換えられています。

しかし、なぜこのコードは動作しますが、私のものではありませんか?

+1

古い質問を参照して新しい質問を投稿し、既存の質問への回答があなたの問題を解決しない理由を説明してください。 – dpr

+0

*なぜ*は 'String ori'ですか?あなたの要件は何ですか? '\ unnnn'は実行時ではなくコンパイラの表記法です。実行時には、16進数ではなく実際の文字コードを使用します。 – EJP

+0

ランダムなコードを使うたびに、変数iは新しいnを作成し、したがってユニコード値の新しい文字列を作成します。だから私は文字列をUnicode文字に変換する必要があります。 "\ u0056"と "0x0056"のような2つのフォームを作成できますが、これ以上は必要ありません。 – Rajibando

答えて

0

String oriは、次の2つの理由で作成することはできません。まず、Unicodeエスケープシーケンスは16進数であり、そしてあなたがintを追加するとき、それはあなたの六角/ Unicode表現で文字列を与えるベース10

String ori = String.format("\\u%04x", i); 

です。例えば、iが47の場合、ori = "\u002f"です。今あなたが表す文字を取得したい場合。それから整数値を解析する必要があります。その値はiに等しくなりますが、iを使用してください。

char c = (char)i; 

これですべてのツールが用意されました。

for(int i = 'A'; i<='Z'; i++){ 
    System.out.println(String.format("\\u%04x is the character: %s", i, (char)i)); 
} 

たとえば、各文字が印刷されます。

\u0051 is the character: Q 

表現を検討してください。

String one = "\u0041"; 

この文字列は1文字の文字列 'A'です。次に、この文字列を考えてみましょう。

String two = "\\u0041"; 

これは6文字の文字列です。あなたがこのような文字列を持っているなら、あなたは文字列から数字をつかんで文字を作ることができます。

char c = (char)Integer.parseInt(two.substring(2), 16); 

たとえば、

String two = "\\u00B6"; 
    char c = (char)(Integer.parseInt(two.substring(2), 16)); 
    System.out.println(two + " is the code for " + c); 
    #\u00B6 is the code for ¶ 
+0

Matt、AはUTF-8:0x41またはUTF-16:0x0041で、ZはUTF-8:0x5AまたはUTF-16:0x005Aです。だから私は、 "0x005A"または "0x5A"のような文字列をユニコード形式で作成します。しかし、私の知恵は文字列形式を単一の文字として読み込むように変換するのをやめます。あなたはoracleのサンプルプログラムをチェックすることができます。 文字列に "\ u005A"という文字列を置き換えて、GUIとコンソールの両方で目的の出力を得ることができます。 – Rajibando

+0

ありがとう、マット!しかし、マット、あなたは、OracleのJavaコードストリームのコンバータを見て、私が置き換えている明確な行があります: 文字列str =新しい文字列( "\ u005A");たとえば、必要な出力が得られます.¶ プログラムでUnicode値を調べる必要はありません。 __ 16進コード形式をUnicodeアルファベットに変換するには、逆プログラムが必要です.¶ ¶段落/改行の表示用です。 – Rajibando

+0

あなたの入力は何ですか?あなたは何をしていますか?出力したい。 'String str = new String(" \ u005A ");'あなたはユニコード文字列を持っていて、それを文字に変換したいのですか? 'String str =" \\ u005A ";"またはユニコード文字を持っていますか? 'String str =" \ u005A "。 – matt

関連する問題