我坚持使用以下代码来解决一个奇怪的问题:
var testString = """
This is test \r\n Pass Fail
"""
if let charIndex = testString.range(of: "\n")?.lowerBound {
let substring = testString[charIndex...]
print(substring.reversed())
var revereseString = String(substring.reversed())
}
我的应用程序崩溃并出现以下错误:致命错误:超出范围:索引
任何人都可以解释为什么在特定情况下它会崩溃。如果我从字符串中删除“ \ r”,它将不会崩溃。有多种方法可以解决此问题,但是我想知道为什么它崩溃了?
答案 0 :(得分:2)
这是因为Swift
将\r\n
视为一个字符,
let foo = "\r"
foo.count // 1
let fee = "\n"
fee.count // 1
let bee = "\r\n"
bee.count // 1
您的一种解决方案是在它们之间\r \n
之间留一个空格,这将使其运行,因为现在它们是2个不同的字符。
如何?
缓冲区将它们注册为变量中的一个字符,但在.range
迭代器中视为两个字符,这导致崩溃。