首页 > 解决方案 > 使用 for 循环从具有多个浮点值的字符串中删除非数字字符

问题描述

我有一个字符串,在列表中包含字符和浮点值,例如 let string = "12.1gh34.5abc32.1"。我想从字符串中删除字符,结果将显示在带有浮点值的数组中。有什么解决办法吗?

标签: swift

解决方案


使用字母作为分隔符拆分字符串。从结果中删除空字符串。将剩余的数字字符串映射为实数。

let string = "12.1gh34.5abc32.1"
let numbers = string.components(separatedBy: .letters)
                    .filter { !$0.isEmpty }
                    .compactMap { Double($0) }

输出是:

[12.1、34.5、32.1]

如果你想处理任何不是十进制数字或逗号的东西,你可以替换.letters为:

CharacterSet(charactersIn: "0123456789.").inverted

推荐阅读