gpt4 book ai didi

arrays - 快速改变字符串数组(swift 2)

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

我有一个字符串数组。例如,这个:

var stringArray1 = ["abcdef", "bcdefg", "cdefgh"]

我想改变数组并取出每个字符串的前 3 个字符。结果将是这样的:

var newStringArray1 = ["def", "efg", "fgh"]

根据 Apple 的文档,我试过这个:

func mutateArray(x: [String]) -> [String] {
var newArray = [String]()
for i in x {
let range = i.startIndex.advancedBy(3)
i.removeRange(range)
newArray.append(i)
}
return newArray
}

但是这一行:

i.removeRange(range)

给我一​​个错误:“不能在可变值上使用可变成员:“i”是一个“let”常量。”

我怎样才能像这样改变数组?我听说 map() 函数也可以,但是在搜索 map 函数时,我收到的大部分解释来自 swift 1/1.2,它在 swift 2 中发生了变化。

谢谢

最佳答案

两种解决方案:

  • 使用 substringFromIndex

    func mutateArray(x: [String]) -> [String] {
    var newArray = [String]()
    for i in x {
    newArray.append(i.substringFromIndex(i.startIndex.advancedBy(3)))
    }
    return newArray
    }


    let stringArray1 = ["abcdef", "bcdefg", "cdefgh"]
    let trimmedStringArray = mutateArray(stringArray1)
  • 使用 map

    let trimmedStringArray = stringArray1.map {$0.substringFromIndex($0.startIndex.advancedBy(3))}

在这两种情况下,如果不能保证始终至少有 3 个字符,您应该检查输入字符串的长度。

关于arrays - 快速改变字符串数组(swift 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33706539/

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