2014-07-22 20 views
16

isAlpha veya isSpace karakterlerini kullanabilmek için Swift'deki "ctype.h" kütüphanesini nasıl kullanırsınız? Ya da daha iyi, Swift, bunu yapmanın bir yolu var mı? Bir dizenin beyaz boşluk/alfanümerik/etc karakterleri içerip içermediğini görmek için nasıl denetleyebilirim?

Bu soru

cevap, ancak çalışmak için görünmüyor: Swift: how to find out if letter is Alphanumeric or Digit

kütüphaneyi nasıl içe belirtmez. Birisi bana doğru yönde işaret edebilir mi?

extension String { 
    subscript (i : Int) -> String { 
     return String(Array(self)[i]) 
    } 
} 

let whitespace = NSCharacterSet.whitespaceCharacterSet() 

let phrase = "Test case" 

for var i=0; i<countElements(phrase); i++ { 
    if whitespace.characterIsMember(phrase[i]) { //error 
     println("char is whitespace") 
    } 
} 
+0

o Swift dizeleri üzerinde Unicode desteği olmayan yöntemler kullanmak iyi bir fikir mi? – trojanfoe

+0

Görünüşe göre (ASCII-only) işlevlerAlpha(), isDigit(), Swift'den kaldırılmıştır. Ancak bu cevaptan NSCharacterSet tabanlı yöntem hala çalışmalıdır. –

+0

Bunu (NSCharacterSet) kullanmaya çalışıyorum, ancak "karakter unichar'a dönüştürülebilir değil" deyip duruyor. – hazrpg

cevap

28

Kullanım NSCharacter tüm ipte değil, karakter bazında karakteri:

let whitespace = NSCharacterSet.whitespaceCharacterSet() 

let phrase = "Test case" 
let range = phrase.rangeOfCharacterFromSet(whitespace) 

// range will be nil if no whitespace is found 
if let test = range { 
    println("whitespace found") 
} 
else { 
    println("whitespace not found") 
} 

Çıktı:

whitespace found 
4

İşte

Bugüne kadar bu var Tam olarak bunu yapan bir String uzantısı yarattım, umarım faydalı olur.

extension String { 

    func containsWhiteSpace() -> Bool { 

     // check if there's a range for a whitespace 
     let range = self.rangeOfCharacterFromSet(.whitespaceCharacterSet()) 

     // returns false when there's no range for whitespace 
     if let _ = range { 
      return true 
     } else { 
      return false 
     } 
    } 
} 
3

Daha kısa uzantı (swift 3)

extension String { 
    var containsWhitespace : Bool { 
     return(self.rangeOfCharacter(from: .whitespacesAndNewlines) != nil) 
    } 
} 
İlgili konular