2011-11-08 47 views
10
user=> (char 65) 
\A 
user=> (char 97) 
\a 
user=> (str (char 65)) 
"A" 
user=> (str (char 97)) 
"a" 

這些是來自ASCII碼十進制值的字符... 如何從字符中獲取ASCII碼十進制值?如何獲取Clojure中字符的ASCII碼十進制值?

+3

注,即Java和Clojure的是使用Unicode(UTF-16),而不是ASCII。你可以得到諸如'(char 0x439)=> \й'和'(int \й)=> 1081'之類的東西。 – ivant

回答

10

一個字符是一個數字,它只是將clojure作爲一個字符顯示給你。最簡單的方法是將該char轉換爲int。

例如

user=> (int \A) 
65 
user=> (int (.charAt "A" 0)) 
65 
+0

我打算補充一點,你可以直接對角色進行數學運算,但看起來你不能在Clojure中使用。它表示爲java.lang.Character(而不是char),Character不擴展java.lang.Number,所以數學運算符不會在Clojure中的字符框中工作。 – Bill

+0

就像使用Java中的字符原語 - 我不認爲你可以添加這些。 – amalloy

+0

作爲Clojure的新手,我還沒有適應我的想法,但有很多可能性。謝謝你讓我走。 – logigolf

10
user=> (doseq [c "aA"] (printf "%d%n" (int c))) 
97 
65 
nil 
user=> (map int "aA");; 
(97 65) 
user=> (apply str (map char [97 65])) 
"aA" 
+0

美麗的方式來將字符串轉換爲其十進制值! – logigolf

相關問題