我有这个字符串:
一些文字:12.3美元9
我希望得到结果:12.39
我找到了如何只保留数字的例子,但在这里我想保留小数点"."
在Swift中这样做的好方法是什么?
Ala*_* T. 11
这应该工作(这是过滤一组字符的一般方法):
[编辑]简化并调整为Swift3
[编辑]调整为Swift4
let text = "$ 123 . 34 .876"
let decimals = Set("0123456789.")
var filtered = String( text.filter{decimals.contains($0)} )
Run Code Online (Sandbox Code Playgroud)
如果您需要忽略超过第二个小数点的任何内容,请添加:
filtered = filtered.components(separatedBy:".") // separate on decimal point
.prefix(2) // only keep first two parts
.joined(separator:".") // put parts back together
Run Code Online (Sandbox Code Playgroud)
最简单和最简单的可重用方式:您可以使用此正则表达式替换选项。这将替换除 0 到 9 和点 (.) 之外的所有字符。
let yourString = "$123. 34"
//pattern says except digits and dot.
let pattern = "[^0-9.]"
do {
let regex = try NSRegularExpression(pattern: pattern, options: NSRegularExpressionOptions.CaseInsensitive)
//replace all not required characters with empty string ""
let string_With_Just_Numbers_You_Need = regex.stringByReplacingMatchesInString(yourString, options: NSMatchingOptions.WithTransparentBounds, range: NSMakeRange(0, yourString.characters.count), withTemplate: "")
//your number converted to Double
let convertedToDouble = Double(string_With_Just_Numbers_You_Need)
} catch {
print("Cant convert")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |