是否有一个函数检查字符串中的字符是否是字母表中的字母? (迅速)

时间:2015-05-29 21:35:56

标签: python swift

我将python程序转换为swift,并且一个部分使用for循环来保持字符串中的每个字符(如果它是一个字母)。在python中,它就像使用' .isalpha()'一样简单,swift中有什么东西可以做到这一点吗? python中的代码:

ISampleProvider

3 个答案:

答案 0 :(得分:2)

Xcode 8 beta4•Swift 3

extension String {
    var lettersOnly: String {
        return components(separatedBy: CharacterSet.letters.inverted).joined(separator:"")
    }
    var lettersArray: [Character] {
        return Array(lettersOnly.characters)
    }
}

Xcode 7.3.1•Swift 2.2.1

extension String {
    var lettersOnly: String {
        return componentsSeparatedByCharactersInSet(NSCharacterSet.letterCharacterSet().invertedSet).joinWithSeparator("")
    }
    var lettersArray: [Character] {
        return Array(lettersOnly.characters)
    }
}

Swift 1.x

import UIKit

extension String {

    var lettersOnly: String {
        return "".join(componentsSeparatedByCharactersInSet(NSCharacterSet.letterCharacterSet().invertedSet))
    }
    var lettersArray: [Character] {
        return Array("".join(componentsSeparatedByCharactersInSet(NSCharacterSet.letterCharacterSet().invertedSet)))
    }


}
let word = "hello 123"

let letters = word.lettersOnly        // "hello"

let lettersArray = word.lettersArray  // ["h", "e", "l", "l", "o"]

答案 1 :(得分:2)

为什么不呢:

let alphabet: [Character] = [
  "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m",
  "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
]

let word = "h4e7l2l8o1"

var answer = [String]()

for letter in word {
  if contains(alphabet, letter) {
    answer.append(String(letter))
  }
}

"".join(answer) // "hello"

甚至:

let answer = "".join(filter(word) {contains(alphabet, $0)}.map{String($0)}) // "hello"

答案 2 :(得分:1)

这应该有效:

import Foundation // For playground or REPL

let word = "This is a string !#€%!€#% 123456 åäö é 中國"
let letterCharSet = NSCharacterSet.letterCharacterSet().invertedSet
let newWord = "".join(word.componentsSeparatedByCharactersInSet(letterCharSet))
// Outputs: "Thisisastringåäöé中國"