swift 使用不同数量的输入数据拆分字符串

qni6mghb  于 2023-01-04  发布在  Swift
关注(0)|答案(2)|浏览(178)

我有一个字符串,看起来像这样:

https://product/000000/product-name-type-color

我使用了一个split来分隔这些字符串,但是遇到了一些问题,因为链接可能没有描述或id

guard let separateLink = deeplink?.split(separator: "/") else { return }

let linkWithoutProductDetails = "\(separateLink[0] ?? "")//\(separateLink[1] ?? "")/\(separateLink[2] ?? "")"

当链接来只有https://product/我得到致命错误:索引超出范围即使使用可选和字符串插值,我怎么能保证独立的信息量在我的链接代码不会打破

a11xaf1n

a11xaf1n1#

您应该检查路径组件的数量。但是,理想情况下,您应该使用URL函数,而不是将链接作为String操作:

if var url = URL(string: "https://product/000000/product-name-type-color") {
    let pathComponents = url.pathComponents

    // "product" is not a path component, it's the host.
    // Path components are "/", "000000" and "product-name-type-color"
    if pathComponents.count > 2 {
        url = url.deletingLastPathComponent()
    }

    print(url)
}
vd2z7a6w

vd2z7a6w2#

要拆分一个包含不同输入数据量的字符串,可以使用Python中的split()函数,该函数将一个分隔符作为参数,并返回一个由指定分隔符分隔的子字符串列表。
例如:
数据="苹果、香蕉、橙子"水果=数据.拆分(",")打印(水果)
这将输出以下列表:["苹果"、"香蕉"、"橘子"]
您还可以通过将整数作为第二个参数传递给split()函数来指定要执行的最大拆分数。例如:
数据="苹果、香蕉、橙子、芒果"水果=数据. split(",",2)打印(水果)
这将输出以下列表:["苹果"、"香蕉"、"橙子、芒果"],因为分割只执行两次。
注意split()函数仅对基于固定分隔符的字符串拆分有效。如果输入数据的分隔符数量可变,则可能需要使用不同的方法来拆分字符串。

相关问题