2012-12-31 262 views
12

在JavaScript中,.charCodeAt()在傳遞給函數的字符串中的某個點處返回一個Unicode值。如果我只有一個字符,我可以使用下面的代碼來獲取Java中的Unicode值。Java等同於.charCodeAt()

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

如果我不得不在Java中的字符串,我將如何得到一個個性的Unicode值在字符串中,像.charCodeAt()功能確實爲JavaScript的?

+1

檢查這個http://stackoverflow.com/questions/2220366/get-unicode-value-of- 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

有過濾你所需要的特殊字符的方式。只是檢查ASCII

希望它可以幫助

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

    } 
} 

} 

輸出

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

將文本作爲參數發送到主函數!我忘了給它建議! –