在 Swift5 中获取部分字符串

Getting partial String in Swift5

我正在尝试从 Swift5 中的给定输入字符串中提取部分字符串。就像字符串的字母 2 到 5。

我确信,像 inputString[2...5] 这样简单的东西会起作用,但我只是让它像这样工作:

String(input[(input.index(input.startIndex, offsetBy: 2))..<(input.index(input.endIndex, offsetBy: -3))])

... 仍在使用相对位置(endIndex-3 而不是 position #5

现在我想知道我到底哪里搞砸了。

人们通常如何通过绝对位置从 "abcdefgh" 中提取 "cde"?

我为 shorthand 子字符串编写了以下扩展,而无需在我的主代码中处理索引和转换:

extension String {
    func substring(from: Int, to: Int) -> String {
        let start = index(startIndex, offsetBy: from)
        let end = index(start, offsetBy: to - from + 1)
        return String(self[start ..< end])
    }
}

let testString = "HelloWorld!"

print(testString.substring(from: 0, to: 4))     // 0 to 4 inclusive

输出 Hello.