swift2 – 从swift中的字符串中删除所有非数字字符

我需要解析一些应该是数值的未知数据,但可能包含空格或其他非字母数字字符.

是否有一种新的方式在swift 2.0?所有我可以在网上找到似乎是老C的做事方式.

我正在查看stringByTrimmingCharactersInSet – 因为我确信我的输入将仅在字符串的开始或结尾处有空格/特殊字符.有没有内置的字符集我可以用于这个?还是我需要创建自己的?

我希望会有一些像StringFromCharactersInSet()这样的东西,这样我只能指定有效的字符来保持

I was hoping there would be something like stringFromCharactersInSet() which would allow me to specify only valid characters to keep.

您可以使用带有反转字符集的修剪字符从字符串的开始或结尾移除字符.在Swift 3:

let result = string.trimmingCharacters(in: CharacterSet(charactersIn: "01234567890.").inverted)

或者,在Swift 2:

let result = string.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: "0123456789.").invertedSet)

或者,如果要在字符串中的任何位置删除非数字字符(不仅仅是开始或结束),您可以过滤字符:

let result = String(string.characters.filter { "01234567890.".characters.contains($0) })

或者,如果您只想匹配某种格式的有效字符串(例如####.##),则可以使用正则表达式.例如,在Swift 3中:

if let range = string.range(of: "\\d+(\\.\\d*)?",options: .regularExpression) {
    let result = string.substring(with: range)
}

或在Swift 2:

if let range = string.rangeOfString("\\d+(\\.\\d*)?",options: .RegularExpressionSearch) {
    let result = string.substringWithRange(range)
}

这些不同方法的行为略有不同,所以它只是取决于你正在尝试做什么.包括或排除小数点,如果你想要十进制数,或只是整数.有很多方法可以实现这一点.

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...