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

Bunlar ascii ondalık değerlerinden karakterlerdir ... Karakterlerden ascii ondalık değerlerini nasıl alabilirim?Clojure'deki karakterlerin ascii ondalık değerlerini nasıl alabilirim?

+3

Not Java ve Clojure Unicode (UTF-16) kullanmakta olduğunu, ASCII. '(Char 0x439) => \ й' ve' (int \ й) => 1081' gibi şeyleri alabilirsiniz. – ivant

cevap

10

Bir karakter bir sayıdır, sadece clojure bir karakter olarak size gösterilir. En kolay yol, bu karakteri bir int için yapmaktır.

örn.

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

Matematikte doğrudan karakter üzerinde yapabileceğinizi ekleyecektim ama Clojure'da yapamadığın anlaşılıyor. Onun java.lang.Character (bir char yerine) olarak temsil ve Karakter java.lang.Number uzatmaz, bu yüzden matematik operatörleri Clojure karakterleri kutusundan çalışmaz. – Bill

+0

Tıpkı Java'daki ilkel karakterler gibi - Bunları da ekleyebileceğinizi düşünmüyorum. – amalloy

+0

Clojure’da yeni başlayan biri olmaktan çıkıp fikrimi henüz pek fazla olasılıkla değiştirmedim. Beni yoluma koyduğun için teşekkür ederim. – 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

Dizeyi ondalık değerlerine dönüştürmenin güzel yolu !! – logigolf