qml*_*ery 23 nscharacterset swift
我正在尝试检查特定字符串是否包含字母.
到目前为止,我已经看到了NSCharacterSet.letterCharacterSet()一组字母,但是我无法检查该集合中的字符是否在给定的字符串中.当我使用此代码时,我收到一条错误说明:
'人物'不能兑换成'unichar'
对于以下代码:
for chr in input{
if letterSet.characterIsMember(chr){
return "Woah, chill out!"
}
}
Run Code Online (Sandbox Code Playgroud)
Vic*_*ler 44
您可以通过NSCharacterSet以下方式使用:
let letters = NSCharacterSet.letters
let phrase = "Test case"
let range = phrase.rangeOfCharacter(from: characterSet)
// range will be nil if no letters is found
if let test = range {
println("letters found")
}
else {
println("letters not found")
}
Run Code Online (Sandbox Code Playgroud)
或者你也可以这样做:
func containsOnlyLetters(input: String) -> Bool {
for chr in input {
if (!(chr >= "a" && chr <= "z") && !(chr >= "A" && chr <= "Z") ) {
return false
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
在Swift 2中:
func containsOnlyLetters(input: String) -> Bool {
for chr in input.characters {
if (!(chr >= "a" && chr <= "z") && !(chr >= "A" && chr <= "Z") ) {
return false
}
}
return true
}
Run Code Online (Sandbox Code Playgroud)
这取决于你,选择一种方式.我希望这对你有帮助.
您应该使用String内置范围功能,NSCharacterSet而不是使用自己的解决方案.这将为您提供更多的灵活性(如果您愿意,可以使用不区分大小写的搜索).
let str = "Hey this is a string"
let characterSet = NSCharacterSet(charactersInString: "aeiou")
if let _ = str.rangeOfCharacterFromSet(characterSet, options: .CaseInsensitiveSearch) {
println("true")
}
else {
println("false")
}
Run Code Online (Sandbox Code Playgroud)
替换"aeiou"你正在寻找的任何字母.
一个不那么灵活但有趣的快速音符就是你可以使用任何可用的功能Sequence.所以你可以这样做:
contains("abc", "c")
Run Code Online (Sandbox Code Playgroud)
这当然只适用于个别角色,不灵活,不推荐.
| 归档时间: |
|
| 查看次数: |
42120 次 |
| 最近记录: |