我正在寻找一种方法,在Swift 4中,测试一个Character是否是一个任意CharacterSet的成员.我有这个Scanner类将用于一些轻量级的解析.该类中的一个功能是跳过当前位置的属于某组可能字符的任何字符.
class MyScanner {
let str: String
var idx: String.Index
init(_ string: String) {
str = string
idx = str.startIndex
}
var remains: String { return String(str[idx..<str.endIndex])}
func skip(charactersIn characters: CharacterSet) {
while idx < str.endIndex && characters.contains(str[idx])) {
idx = source.index(idx, offsetBy: 1)
}
}
}
let scanner = MyScanner("fizz buzz fizz")
scanner.skip(charactersIn: CharacterSet.alphanumerics)
scanner.skip(charactersIn: CharacterSet.whitespaces)
print("what remains: \"\(scanner.remains)\"")
Run Code Online (Sandbox Code Playgroud)
我想实现该skip(charactersIn:)功能,以便打印上面的代码buzz fizz.
最棘手的部分是characters.contains(str[idx]))在while- .contains()需要Unicode.Scalar,我不知所措,试图找出下一步骤.
我知道我可以在一传String …