首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >斯威夫特的扫描仪.charactersToBeSkipped是如何工作的?

斯威夫特的扫描仪.charactersToBeSkipped是如何工作的?
EN

Stack Overflow用户
提问于 2020-08-23 12:06:40
回答 1查看 135关注 0票数 0

有人能解释一下,为什么在默认的.charactersToBeSkipped设置为.whitespacesAndNewlines的情况下,扫描仪在“扫描1”(参见代码)中的第一个空格处停止呢?看来我不懂跳过字符的概念。

扫描2-4只是测试用例。Xcode 11 / Swift 4

游乐场:

代码语言:javascript
复制
let hexCs = CharacterSet(charactersIn: "1234567890abcdefABCDEF")
let hexWhiteCs = CharacterSet().union(hexCs).union(.whitespacesAndNewlines)

let ascii = "<19 19 19 19>"

let scanner = Scanner(string:ascii)
_ = scanner.scanString("<")
let reset = scanner.currentIndex
/// Scan 1:
var result = scanner.scanCharacters(from: hexCs) // "19"
/// Scan 2:
scanner.charactersToBeSkipped = nil
scanner.currentIndex = reset
result = scanner.scanCharacters(from: hexCs) // "19"
/// Scan 3:
scanner.currentIndex = reset
result = scanner.scanCharacters(from: hexWhiteCs) // "19 19 19 19"
/// Scan 4:
scanner.charactersToBeSkipped = .whitespacesAndNewlines
scanner.currentIndex = reset
result = scanner.scanCharacters(from: hexWhiteCs) // "19 19 19 19"

let expected = result!.filter { !CharacterSet.whitespacesAndNewlines.contains($0.unicodeScalars.first!) } // "19191919"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-23 13:28:23

文档可以:

要跳过的字符在扫描仪检查目标之前被跳过。例如,如果扫描器忽略空格并向其发送scanInt:消息,则它跳过空格,直到找到十进制数字或其他字符。当一个元素被扫描时,没有字符被跳过

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63546740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档