2012-12-31 17 views
12

In JavaScript gibt .charCodeAt() einen Unicode-Wert an einem bestimmten Punkt in der Zeichenfolge zurück, die Sie an eine Funktion übergeben. Wenn ich nur ein Zeichen hätte, könnte ich den folgenden Code verwenden, um den Unicode-Wert in Java zu erhalten.Java-Äquivalent für .charCodeAt()

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

Wenn ich eine Zeichenfolge in Java hat, wie würde ich den Unicode-Wert eines einzelnen Zeichen innerhalb der Zeichenfolge, wie die .charCodeAt() Funktion für JavaScript tut?

+1

Kontrolle dieses hilft http://stackoverflow.com/questions/2220366/get-unicode-value-of- a-character –

+8

wow eine Frage, die legitimerweise 'java' und' javascript' markiert hat! – jbabey

+0

Wer hat dir gesagt _Unicode ist 24 Bit_ ?? – jlordo

Antwort

14

Java hat die gleiche Methode: Character.codePointAt(CharSequence seq, int index);

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

hat es keine Leistungsdifferenz als mit 'int value = str.charAt (index);' – exexzian

+2

Ja, es ist langsamer. Aber es funktioniert sogar für 4-Byte-Zeichen, die aus einem hohen und niedrigen Surrogat bestehen, während dies bei Ihnen nicht der Fall ist. Sie können immer [die Implementierung ansehen] (http://docjar.com/html/api/java/lang/Character.java.html). – jlordo

+0

Ihre Funktion wäre also besser für die Verschlüsselung, @jlordo? – syb0rg

0

Versuchen Sie folgendes:

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

Dies wird in den meisten Fällen korrekt sein, aber nicht für Zeichen, die durch einen hohen und einen niedrigen Ersatz dargestellt werden. – jlordo

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

Es gibt Kompilierfehler – exexzian

+0

@sansix jetzt bearbeitet, ok? –

+0

@AndroidKiller warum in Byte umwandeln ?? Was ist mit all den anderen Charakteren ... – jlordo

0

Es ist der Weg, die Sonderzeichen zu filtern, die Sie benötigen. Nur überprüfen Sie die ASCII Tabelle

Hope it

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

Sende den Text als Parameter an die Hauptfunktion !! Ich habe vergessen, es zu empfehlen !! –

Verwandte Themen