gpt4 book ai didi

arrays - 我可以将数组中的第一个字符过滤为 String,将第二个字符过滤为 Int 吗?

转载 作者:行者123 更新时间:2023-11-28 07:59:07 24 4
gpt4 key购买 nike

我想象是否可以将第一个字符过滤为字符串,将第二个字符过滤为 Int?例如,我在数组上有 M1: test MB2: test M

如果我使用这段代码:

过滤器{$0.contains("M")

它将过滤 M1B2 因为它们都有 M 字符

而且我在想是否有任何方法可以使用像filter{$0.contains("M"+number)这样的东西,所以只有在M之后有数字时它才能过滤

最佳答案

您可以映射您的字符串,拆分由 “:” 分隔的组件。添加一个守卫来过滤以所需字母开头的结果元素前缀,删除该前缀的第一个字符并将结果字符串强制转换为 Int:

let array = ["M1: test","M2: test", "B2: test"]

let values: [Int] = array.flatMap {
guard
let prefix = $0.components(separatedBy: ":").first,
prefix.first == "M" else { return nil }
return Int(prefix.dropFirst()) ?? 0
}

print(values) // "[1, 2]\n"

如果您需要将它们分组并修剪空格:

let array = ["M1: test"," M2: test", "B2: test"]

let results = array.flatMap{ string -> (letter: String, value: Int, note: String)? in
guard
case let components = string.components(separatedBy: ":"),
let prefix = components.first?.trimmingCharacters(in: .whitespaces),
let suffix = components.last?.trimmingCharacters(in: .whitespaces),
let letter = prefix.first else { return nil }
return (String(letter), Int(prefix.dropFirst()) ?? 0, suffix)
}

print(results) // "[(letter: "M", value: 1, note: "test"), (letter: "M", value: 2, note: "test"), (letter: "B", value: 2, note: "test")]\n"

如果你只需要前缀为“M”的元素:

let filtered = array.filter { $0.hasPrefix("M") }

print(filtered) // "["M1: test", "M2: test"]\n"\n"

关于arrays - 我可以将数组中的第一个字符过滤为 String,将第二个字符过滤为 Int 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47168074/

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