gpt4 book ai didi

ios - 如何在 Swift 中检查字符串以(前缀)开头或以(后缀)结尾

转载 作者:IT王子 更新时间:2023-10-29 04:56:45 27 4
gpt4 key购买 nike

我正在尝试测试 Swift 字符串是否以特定值开头或结尾。这些方法不存在:

var str = "Hello, playground"
str.startsWith("Hello") // error
str.endsWith("ground") // error

我还想获取前缀和后缀字符串。我可以找到一个子字符串,如回答 herehere ,但在 Swift 中,范围是如此痛苦。

有更简单的方法吗?

(我在阅读 the documentation 时偶然发现了答案,由于我的搜索词没有出现 SO 答案,所以我在这里添加我的问答。)

最佳答案

针对 Swift 4 进行了更新

检查字符串的开头和结尾

您可以使用 hasPrefix(_:)hasSuffix(_:) 方法来测试与另一个字符串是否相等。

let str = "Hello, playground"

if str.hasPrefix("Hello") { // true
print("Prefix exists")
}

if str.hasSuffix("ground") { // true
print("Suffix exists")
}

获取实际的前缀和后缀子串

为了获得实际的前缀或后缀子串,您可以使用以下方法之一。我推荐第一种方法,因为它很简单。所有方法都使用str作为

let str = "Hello, playground"

方法一:(推荐)prefix(Int) and suffix(Int)

let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground

我认为这是更好的方法。与下面的方法 2 和 3 不同的是,如果索引越界,该方法不会崩溃。它只会返回字符串中的所有字符。

let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground

当然,有时崩溃是件好事,因为它们让您知道您的代码存在问题。因此,请考虑下面的第二种方法。如果索引超出范围,它将抛出错误。

方法 2:prefix(upto:)suffix(from:)

Swift 字符串索引很棘手,因为它们必须考虑特殊字符(如表情符号)。但是,一旦获得索引,就很容易获得前缀或后缀。 (参见 String.Index 上的 my other answer。)

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground

如果你想防止越界,你可以使用 limitedBy 创建一个索引(再次参见 this answer )。

方法三:下标

由于String是一个集合,可以使用下标获取前缀和后缀。

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground

进一步阅读

关于ios - 如何在 Swift 中检查字符串以(前缀)开头或以(后缀)结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32967445/

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