我需要解析一些未知的数据,这些数据应该只是一个数字值,但可能包含空格或其他非字母数字字符。
在Swift中有没有一种新的方式来做这件事?我在网上所能找到的似乎都是老的C语言做事的方式。
我正在查看stringByTrimmingCharactersInSet
-因为我确信我的输入在字符串的开头或结尾只有空格/特殊字符。有没有内置的字符集可以用来做这件事?或者我需要创建我自己的?
我希望有像stringFromCharactersInSet()
这样的东西,它允许我只指定要保留的有效字符
发布于 2017-05-24 14:41:16
我更喜欢this solution,因为我喜欢扩展,而且它对我来说似乎更干净一些。此处转载的解决方案:
extension String {
var digits: String {
return components(separatedBy: CharacterSet.decimalDigits.inverted)
.joined()
}
}
发布于 2016-04-13 18:26:46
一种使用filter
函数和rangeOfCharacterFromSet
的解决方案
let string = "sld [f]34é7*˜µ"
let alphaNumericCharacterSet = NSCharacterSet.alphanumericCharacterSet()
let filteredCharacters = string.characters.filter {
return String($0).rangeOfCharacterFromSet(alphaNumericCharacterSet) != nil
}
let filteredString = String(filteredCharacters) // -> sldf34é7µ
要仅筛选数字字符,请使用
let string = "sld [f]34é7*˜µ"
let numericSet = "0123456789"
let filteredCharacters = string.characters.filter {
return numericSet.containsString(String($0))
}
let filteredString = String(filteredCharacters) // -> 347
或
let numericSet : [Character] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
let filteredCharacters = string.characters.filter {
return numericSet.contains($0)
}
let filteredString = String(filteredCharacters) // -> 347
发布于 2016-12-08 07:37:14
Swift 3,过滤除数字以外的所有内容
let myString = "dasdf3453453fsdf23455sf.2234"
let result = String(myString.characters.filter { String($0).rangeOfCharacter(from: CharacterSet(charactersIn: "0123456789")) != nil })
print(result)
https://stackoverflow.com/questions/36594179
复制相似问题