我需要解析一些应该是数值的未知数据,但可能包含空格或其他非字母数字字符.
是否有一种新的方式在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) }
这些不同方法的行为略有不同,所以它只是取决于你正在尝试做什么.包括或排除小数点,如果你想要十进制数,或只是整数.有很多方法可以实现这一点.