gpt4 book ai didi

Swift 子字符串在反转时崩溃(需要一个原因)

转载 作者:搜寻专家 更新时间:2023-11-01 06:53:59 24 4
gpt4 key购买 nike

我遇到了以下代码的一个奇怪问题:

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())
}

我的应用程序因以下错误而崩溃: fatal error :越界:索引 < startIndex

任何人都可以解释为什么它在特定情况下会崩溃。如果我从字符串中删除“\r”,它不会崩溃。有多种方法可以解决此问题,但我想知道它崩溃的原因?

最佳答案

这是因为 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 迭代器中将它们视为导致崩溃的两个字符。

关于Swift 子字符串在反转时崩溃(需要一个原因),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55038327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com