Swift scanUpToString 未按预期工作

Swift scanUpToString not working as expected

我在使用 scanUpToString 方法时遇到问题,它没有像我预期的那样工作

let str1 = "123-456-7890"
let scanner = Scanner(string: str1)
let part1  = scanner.scanUpToString("-")
let part2  = scanner.scanUpToString("-")
let part3 = scanner.scanUpToString("-")

第 1 部分我得到 123,但第 2 部分和第 3 部分为零

我还需要做些什么才能得到 part2 = 456part3 = 7890 吗?

存在的问题是扫描程序在当前索引处一遍又一遍地找到相同的字符串“-”。如果您需要使用此方法,则需要在每次扫描后将 currentIndex 向前移动一个字符:

let str1 = "123-456-7890"
let scanner = Scanner(string: str1)
let part1  = scanner.scanUpToString("-")  // "123"
scanner.currentIndex = str1.index(after: scanner.currentIndex)
let part2  = scanner.scanUpToString("-")  // "456"
scanner.currentIndex = str1.index(after: scanner.currentIndex)
let part3 = scanner.scanUpToString("-")  // "7890"