2012-12-31 19 views
12

JavaScript'te, .charCodeAt(), bir işleve ilettiğiniz dizede belirli bir noktada bir Unicode değeri döndürür. Tek bir karaktere sahip olsaydım, Java'daki Unicode değerini almak için aşağıdaki kodu kullanabilirdim. Java bir dize olsaydı .charCodeAt() işlevi JavaScript için yaptığı gibiJava için eşdeğer .charCodeAt()

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

, nasıl, dize içinde bir bireysel karakterin Unicode değerini alacağı?

+1

çek Umarım bu yardımcı olur ASCII Tablo kontrol http://stackoverflow.com/questions/2220366/get-unicode-value-of- a-character –

+8

meşru bir şekilde 'java' ve 'javascript' etiketli bir soruyu vurarak! – jbabey

+0

Sana kim söyledi _Unicode 24 bits_? – jlordo

cevap

14

Java aynı yöntemi vardır: İhtiyacınız özel karakterleri filtrelemek için yol yoktur Character.codePointAt(CharSequence seq, int index);

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

, 'int value = str.charAt (index); ' – exexzian

+2

Evet' den daha düşük bir performans farkına sahiptir. Ancak, yüksek ve düşük bir vekilden oluşan 4 baytlık karakterler için bile doğru çalışır, oysaki seninki olmaz. Her zaman [uygulamaya bakınız] (http://docjar.com/html/api/java/lang/Character.java.html). – jlordo

+0

Yani fonksiyonunuz şifreleme için daha iyi olurdu, o zaman @jlordo? – syb0rg

0

bu deneyin:

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

Bu, çoğu durumda doğru olacaktır, ancak yüksek ve düşük bir vekil tarafından temsil edilen karakterler için geçerli değildir. – jlordo

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

Onun derleme zamanı hatası veren – exexzian

+0

@sansix düzenlenmiş, tamam mı? –

+0

@AndroidKiller neden bayt için ?? Diğer tüm karakterler hakkında ne ... – jlordo

0

. Sadece

o

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]); 
     } 

    } 
} 

} 

ÇIKIŞ

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

Metni parametre olarak ana işleve gönderin! bunu tavsiye ettim! –