SORU
11 NİSAN 2011, PAZARTESİ


Clojure içinde nasıl bir dizi için bir Dize dönüştürmek miyim?

Farklı çizgiler var, bazıları gibi "", bazıları gibi "45px". 45 Peki ben nasıl 45 numara için bunların her ikisi de dönüştürmek?

CEVAP
8 ŞUBAT 2012, ÇARŞAMBA


Yeni cevap

Snrobot cevabı daha çok seviyorum. Java yöntemi kullanarak daha basit ve bu basit kullanım örneği için okuma-string kullanarak daha sağlamdır. Küçük birkaç değişiklik yaptım. Yazar, negatif sayılar kural olmadığı için, negatif sayılar izin ayarladım. Ben de numarasını dize baştan başlamak gerekir öyle yaptı.

(defn parse-int [s]
  (Integer/parseInt (re-find #"\A-?\d " s)))

Ayrıca Tamsayı/parseınt hayır taban ve önde gelen sıfır değilse bile verilen, zaman ondalık olarak kullandığı buldum.

Eski cevap

İlk olarak, sadece bir tam sayı ayrıştırılamıyor bu google üzerinde bir isabet ve iyi bir arka plan bilgileri (beri):

reader: kullanabilirsiniz

(read-string "9") ; => 9

Oku sonra bir numara olduğunu kontrol edin:

(defn str->int [str] (if (number? (read-string str))))

Eğer kullanıcı giriş de okuyun önce kontrol edin diye clojure okuyucu tarafından güvenilir olabilir emin değilim:

(defn str->int [str] (if (re-matches (re-pattern "\\d ") str) (read-string str)))

Son çözüm tercih ederim.

Ve şimdi, belirli bir soru için. Bir tamsayı ile başlayan bir şey ayrıştırmak için 29px gibi:

(read-string (second (re-matches (re-pattern "(\\d ).*") "29px"))) ; => 29

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DONFANTASTICKYPESS

    DONFANTASTIC

    1 Temmuz 2007
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006
  • steeletraining

    steeletraini

    28 NİSAN 2010