gpt4 book ai didi

swift - 测试 CharacterSet 是否包含 Swift 4 中的 Character 的最佳方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 05:23:16 26 4
gpt4 key购买 nike

我正在寻找一种方法,在 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)\"")

我想实现 skip(charactersIn:) 函数,以便上面的代码打印 buzz fizz

棘手的部分是 while 中的 characters.contains(str[idx])) - .contains() 需要一个 Unicode.Scalar,我不知道下一步该怎么做。

我知道我可以将 String 传递给 skip 函数,但我想找到一种方法让它与 CharacterSet< 一起工作,因为所有方便的静态成员(alphanumericswhitespaces 等)。

如果 CharacterSet 包含 Character,如何测试它?

最佳答案

不确定这是否是最有效的方法,但您可以创建一个新的 CharSet 并检查它们是否是子集/超集(集比较相当快)

let newSet = CharacterSet(charactersIn: "a")
// let newSet = CharacterSet(charactersIn: "\(character)")
print(newSet.isSubset(of: CharacterSet.decimalDigits)) // false
print(newSet.isSubset(of: CharacterSet.alphanumerics)) // true

关于swift - 测试 CharacterSet 是否包含 Swift 4 中的 Character 的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45872368/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com