2017-04-17 8 views
1

特殊文字を10進数に変換するJavaライブラリがありますか?特殊文字をJavaの同等の10進数に変換

例: 入力: "©™®" 出力: "© ™ ®"(宇宙進相当せずに入力した場合&後のスペースは、唯一の問題のためであるが変換されます特殊文字に)

ありがとう!

+0

[クエリ文字列パラメータのジャワのURLエンコーディング]の可能な重複(http://stackoverflow.com/questions/10786042/java-urlを想定しました-encoding-of-query-string-parameters) –

+0

あなたが試したことを示してください。ありがとう – Omore

+0

FYI、私はあなたが望むものの技術用語が "数値文字参照"だと信じています。 –

答えて

2

How do I get the decimal value of a unicode character in Java?で説明されているように、文字の整数値を取得するだけで済みます。オラクルのJava doc

文字を1として

:charデータ型は、1つの16ビットUnicode文字です。 '\ u0000'(または0)の最小値と '\ uffff'(または 65535を含む)の最大値を持つ です。

文字が文字範囲内にあると仮定すると、文字列の各文字に相当する10進数を得ることができます。

String text = "©™®"; 
    char[] cArr = text.toCharArray(); 
    for (char c : cArr) 
    { 
     int value = c; // get the decimal equivalent of the character 
     String result = "& #" + value; // append to some format string 
     System.out.println(result); 
    } 

出力:

& #169 
& #8482 
& #174 
3

これは単にString.format()を達成することができます。表現は単純に小数点の文字の値で、4文字にパディングされ、&#でラップされます。

唯一の難しい部分は、どの文字が「特別」であるかを決定することです。ここに私はいない数字ではなく、空白ではなく、アルファ...

StringBuilder output = new StringBuilder(); 
String input = "Foo bar ©™® baz"; 
for (char each : input.toCharArray()) { 
    if (Character.isAlphabetic(each) || Character.isDigit(each) || Character.isWhitespace(each)) { 
     output.append(each); 
    } else { 
     output.append(String.format("&#%04d;", (int) each)); 
    } 
} 
System.out.println(output.toString()); 
+0

@Downvoter問題を特定して対処します。ありがとうございました:) – Adam

+0

真剣に男、何らかの理由で何の投票もありません。 –

+0

@adam - ありがとうございます。あなたの答えは、私が探しているものに適しているように見えます。私はそれを試み、あなたに知らせるでしょう。 – krb

関連する問題