gpt4 book ai didi

arrays - Swift:将字符串中以逗号分隔的数字列表安全地转换为 Ints 数组

转载 作者:行者123 更新时间:2023-11-28 09:43:56 25 4
gpt4 key购买 nike

我想从一个字符串创建一个整数数组 [Int],该字符串应包含一个逗号分隔的列表。

以下是一些有效的输入:

1
1,2,3
1,5,10

以下是一些无效的输入:

[nil] // no value set
1,,2,3 // extra commas
1,Z,10 // characters other than numbers and commas

我已经设法为第一部分想出了一些办法,即使用以下代码将值分离出来:

func get_numbers() -> Array<Int>{
return self.numbers_as_csv_string!
.components(separatedBy: ",")
.map { word in Int(word.trimmingCharacters(in: CharacterSet.whitespaces))! }
}

不幸的是,该代码无法处理上面列出的无效输入,应用程序在大多数情况下只会崩溃。对此添加一些检查的最佳方法是什么,以便如果存在无效列表,我们只返回 [1]?我想要尽可能短的代码 - 正则表达式是到达此处的最佳方式吗?

非常感谢!

最佳答案

不使用 ! 强制解包,而是使用 flatMap 忽略无法转换为 Int 的组件:

func get_numbers() -> Array<Int> {
return self.numbers_as_csv_string!
.components(separatedBy: ",")
.flatMap {
Int($0.trimmingCharacters(in: .whitespaces))
}
}

示例结果:

1           => [1]
1,2,3 => [1,2,3]
1,5,10 => [1,5,10]

nil => []
1,,2,3 => [1,2,3]
1,Z,10 => [1,10]

关于arrays - Swift:将字符串中以逗号分隔的数字列表安全地转换为 Ints 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39598828/

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