小编g-m*_*ark的帖子

测试一个CharacterSet是否在Swift 4中包含一个字符的最佳方法是什么?

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

swift swift4

13
推荐指数
3
解决办法
8652
查看次数

标签 统计

swift ×1

swift4 ×1