Как проверить котировки в swift 4? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь проверить строку, содержит ли она одинарную или двойную кавычку

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

var usernameSQL = username.text?.contains("\'") as! Bool || username.text?.contains("\"") as! Bool

guard !usernameSQL else {
            let alertVC = UIAlertController(title: "Invlalid symbols", message: "(') and (\") symbols are not allowed", preferredStyle: .alert)
            alertVC.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))

            self.show(alertVC, sender: nil)
            return
        }

print("passed")

То, что я получаю, это «пропущено» при печати вместо предупреждения «Неверные символы».

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Более разумным решением является использование CharacterSet и rangeOfCharacter(from:. Преимущество заключается в том, что необязательное развертывание не требуется.

Если кавычек нет, выражение возвращает nil и передает guard.

let quoteSet = CharacterSet(charactersIn: "\'\"")
guard username.text?.rangeOfCharacter(from: quoteSet) == nil else { ...

Однако я бы воспользовался советом Ларма и создал набор символов с разрешенными символами.

0 голосов
/ 09 апреля 2019

Я думаю, вы слишком усложняете вещи.

Вы можете легко достичь того же результата с помощью этого небольшого рефакторинга.

if let textValue = username.text {
    if textValue.contains("\'") || textValue.contains("\"") {
        print("Show Alert")
    } else {
        print("Passed")
    }
} else {
    print("username.text is nil do something or just ignore")
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...