2012-12-31 34 views
12

JavaScriptでは、.charCodeAt()は、関数に渡す文字列の特定のポイントでUnicode値を返します。私が1文字しか持っていなかった場合は、JavaでUnicode値を取得するために以下のコードを使用することができました。.charCodeAt()のJava相当語

public int charCodeAt(char c) { 
    int x; 
    return x = (int) c; 
} 

私はJavaで文字列を持っていた場合.charCodeAt()機能ではJavaScriptの場合と同様に、どのように私は、文字列内の1つの個々の文字のUnicode値を取得するのでしょうか?

+1

チェックこのhttp://stackoverflow.com/questions/2220366/get-unicode-value-of-を役に立てば幸いASCII表をご確認くださいa-character –

+8

正当に 'java'と' javascript'がタグ付けされているという質問にうわー! – jbabey

+0

あなたは_Unicodeは24ビットですか? – jlordo

答えて

14

Javaは同じメソッドを持っている:あなたが必要とする特殊文字をフィルタリングする方法がありCharacter.codePointAt(CharSequence seq, int index);

String str = "Hello World"; 
int codePointAt0 = Character.codePointAt(str, 0); 
+0

は、 'int value = str.charAt(index); 'を使用するよりも性能が違います。 – exexzian

+2

はい、速度が遅いです。しかし、4バイト文字でも正しく動作しますが、上位と下位のサロゲートから構成されますが、あなたのものはそうではありません。いつでも[実装を見る]ことができます(http://docjar.com/html/api/java/lang/Character.java.html)。 – jlordo

+0

あなたの関数は暗号化の方が良いでしょう、@jlordo? – syb0rg

0

これを試してみてください:

public int charCodeAt(String string, int index) { 
    return (int) string.charAt(index); 
} 
+1

これは大抵の場合正しいでしょうが、上位と下位サロゲートによって表される文字では正しくありません。 – jlordo

-2
short unicode = string.charAt(index); 
+0

コンパイル時エラー – exexzian

+0

@sansixが編集されました。 –

+0

@AndroidKillerなぜバイトにキャストするのですか?何 – jlordo

0

。ただ、

はそれが

public class main { 

public static void main(String args[]) { 
    String str = args[0]; 
    String bstr = ""; 
    String[] codePointAt = new String[str.length()]; 

    if (str != "") 
    { 
     for (int j = 0; j < str.length(); j++) 
     { 
      int charactercode=Character.codePointAt(str, j); 
      //CHECK on ASCII TABLE THE SPECIAL CHARS YOU NEED 
      if( (charactercode>31 && charactercode<48) || 
        (charactercode>57 && charactercode<65) || 
        (charactercode>90 && charactercode<97) || 
        (charactercode>127) 

       ) 
      { 
       codePointAt[ j] ="&"+String.valueOf(charactercode)+";"; 
      } 
      else 
      { 
       codePointAt[ j] = String.valueOf(str.charAt(j)); 
      } 
     } 

     for (int j = 0; j < codePointAt.length; j++) 
     { 
      System.out.println("CODE "+j+" ->"+ codePointAt[j]); 
     } 

    } 
} 

} 

OUTPUT

call with ("TRY./&asda") 

CODE 0 ->T 
CODE 1 ->R 
CODE 2 ->Y 
CODE 3 ->&46; 
CODE 4 ->&47; 
CODE 5 ->&38; 
CODE 6 ->a 
CODE 7 ->s 
CODE 8 ->d 
CODE 9 ->a 
+0

テキストをメイン関数にパラメータとして送ります!!私はそれを忘れてしまった! –