У меня есть метод, который предназначен для возврата логического значения true, если строковое значение, которое он получает, содержит любую комбинацию символов верхнего или нижнего регистра или дефиса, и возвращает false, если он содержит любые числа или специальные символы (т.е. содержит что-либо за пределами указанного набора символов). У меня есть следующий метод, который, к сожалению, этого не делает:Попытка убедиться, что метод проверяет символы альфа и дефис в Swift
let alphaCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-"
if self.isNameValid("joe-bYlow") {
print("correct")
} //passes
if self.isNameValid("YYYYY") {
print("correct")
} //passes
if self.isNameValid("8888ja;sdf") {
print ("wrong")
} //fails i.e. it prints "wrong"
if self.isNameValid("__^&^%%%jdjjd") {
print ("wrong")
} //fails i.e. it prints "wrong"
if self.isNameValid("9999") {
print("also wrong")
} //passes
if self.isNameValid("blahBlah8") {
print("wrong")
} //fails i.e. it prints "wrong"
if self.isNameValid("Frank") {
print("correct")
} //passes
func isNameValid(name: String) -> Bool {
let characterSetAllowed = NSCharacterSet(charactersInString: alphaCharacters)
if let _ = name.rangeOfCharacterFromSet(characterSetAllowed, options: .CaseInsensitiveSearch) {
return true
} else {
return false
}
}
Может ли кто-нибудь увидеть, что это я делаю неправильно?
Большое спасибо за ваше время и помощь. Ваше решение сработало! – syedfa