我对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 = 456
和part3 = 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"