Подтвердить что ты не робот

Каков наилучший способ определить, содержит ли строка символ из набора в Swift

Мне нужно определить, содержит ли строка какой-либо символ из настраиваемого набора, который я определил.

Я вижу из этого сообщение, что вы можете использовать rangeOfString, чтобы определить, содержит ли строка другую строку. Это, конечно же, также работает для символов, если вы тестируете каждый символ по одному.

Мне интересно, что лучший способ сделать это.

4b9b3361

Ответ 1

Вы можете создать CharacterSet, содержащий набор ваших настраиваемых символов а затем проверьте принадлежность к этому набору символов:

Swift 3:

let charset = CharacterSet(charactersIn: "aw")
if str.rangeOfCharacter(from: charset) != nil {
    print("yes")
}

Для сравнения без учета регистра используйте

if str.lowercased().rangeOfCharacter(from: charset) != nil {
    print("yes")
}

(предполагая, что набор символов содержит только строчные буквы).

Swift 2:

let charset = NSCharacterSet(charactersInString: "aw")
if str.rangeOfCharacterFromSet(charset) != nil {
    print("yes")
}

Swift 1.2

let charset = NSCharacterSet(charactersInString: "aw")
if str.rangeOfCharacterFromSet(charset, options: nil, range: nil) != nil {
    println("yes")
}

Ответ 2

ONE LINE Swift4 решение, чтобы проверить, содержит ли буквы:

CharacterSet.letters.isSuperset(of: CharacterSet(charactersIn: myString) // returns BOOL

Еще один случай, когда вам нужно проверить строку для пользовательских наборов символов. Например, если строка содержит только буквы и (например) тире и пробелы:

let customSet: CharacterSet = [" ", "-"]
let finalSet = CharacterSet.letters.union(customSet)
finalSet.isSuperset(of: CharacterSet(charactersIn: myString)) // BOOL

Надеюсь, это поможет кому-то однажды :)

Ответ 3

Из Swift 1.2 вы можете сделать это, используя Set

var str = "Hello, World!"
let charset: Set<Character> = ["e", "n"]

charset.isSubsetOf(str)     // `true` if `str` contains all characters in `charset`
charset.isDisjointWith(str) // `true` if `str` does not contains any characters in `charset`
charset.intersect(str)      // set of characters both `str` and `charset` contains.

Swift 3 или более поздняя версия

let isSubset = charset.isSubset(of: str)        // `true` if `str` contains all characters in `charset`
let isDisjoint = charset.isDisjoint(with: str)  // `true` if `str` does not contains any characters in `charset`
let intersection = charset.intersection(str)    // set of characters both `str` and `charset` contains.
print(intersection.count)   // 1

Ответ 4

Используя Swift 3, чтобы определить, содержит ли ваша строка символы из определенного набора символов:

    let letters = CharacterSet.alphanumerics
    let string = "my-string_"
    if (string.trimmingCharacters(in: letters) != "") {
        print("Invalid characters in string.")
    }
    else {
        print("Only letters and numbers.")
    }

Ответ 5

swift3

var str = "Hello, playground"
let res = str.characters.contains { ["x", "z"].contains( $0 ) }

Ответ 6

Пример Swift 3:

extension String{
    var isContainsLetters : Bool{
        let letters = CharacterSet.letters
        return self.rangeOfCharacter(from: letters) != nil
    }
}

Использование:

"123".isContainsLetters // false

Ответ 7

Вы можете сделать это следующим образом:

var string = "Hello, World!"

if string.rangeOfString("W") != nil {
     println("exists")
} else {
     println("doesn't exist")
}

// alternative: not case sensitive
if string.lowercaseString.rangeOfString("w") != nil {
     println("exists")
} else {
     println("doesn't exist")
}

Ответ 8

func isAnyCharacter( from charSetString: String, containedIn string: String ) -> Bool
{
    return Set( charSetString.characters ).isDisjointWith( Set( string.characters) ) == false
}

Ответ 9

Swift 4

let myString = "Some Words"

if myString.contains("Some"){
    print("myString contains the word 'Some'")
}else{
    print("myString does NOT contain the word 'Some'")
}

Свифт 3:

let myString = "Some Words"

if (myString.range(of: "Some") != nil){
    print("myString contains the word 'Some'")
}else{
    print("Word does not contain 'Some'")
}

Ответ 10

Используйте как это в Swift 4.2

    var string = "Hello, World!"
    let charSet = NSCharacterSet.letters
    if string.rangeOfCharacter(from:charSet)?.isEmpty == false{  
      print ("String contain letters");
    }