2014-07-22 2 views
16

isAlpha 또는 isSpace을 문자로 사용하려면 Swift에서 "ctype.h"라이브러리를 어떻게 사용할 수 있습니까? 아니면 더 나은, 빠른, 그것을하는 방법이 있습니까? 문자열에 공백/영숫자/문자가 포함되어 있는지 확인하려면 어떻게해야합니까?

이 질문에

대답하지만, 작동하지 않는 것 : Swift: how to find out if letter is Alphanumeric or Digit

라이브러리를 가져 오는 방법을 지정하지 않습니다. 누군가가 올바른 방향으로 나를 가리킬 수 있을까요?

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

는 스위프트 문자열에서 유니 코드를 지원하지 않는 방법을 사용하는 것이 좋습니다? – trojanfoe

+0

(ASCII 전용) 함수 isAlpha(), isDigit()가 Swift에서 제거 된 것 같습니다. 그러나 그 대답의 NSCharacterSet 기반 방법은 여전히 ​​작동해야합니다. –

+0

나는 그 (NSCharacterSet)를 사용하려하지만 "문자가 unichar로 변환 할 수 없다"는 것을 계속 말합니다. – hazrpg

답변

28

사용 NSCharacter를 전체 문자열이 아닌 문자 단위 :

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") 
} 

출력 :

whitespace found 
4

을 여기

는 내가 지금까지있어 무엇 정확히 이것을하는 String 확장을 만들었습니다. 유용하다고 생각합니다.

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

짧은 확장 (SWIFT 3)

extension String { 
    var containsWhitespace : Bool { 
     return(self.rangeOfCharacter(from: .whitespacesAndNewlines) != nil) 
    } 
} 
관련 문제