Swift scanUpToString未按预期工作



我对scanUpToString方法有问题,它没有像我预期的那样工作

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

我第一部分得到123,但第二部分和第三部分没有

对于part2 = 456part3 = 7890,我还有什么需要做的吗?

问题是扫描仪正在查找相同的字符串&quot-"一遍又一遍地查看当前索引。如果你需要使用这种方法,你需要在每次扫描后将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"

最新更新