我可以使用以下代码提取数字:
let weightt = x.components(separatedBy: CharacterSet.decimalDigits.inverted).joined(separator: "")
例如,我得到" 01"来自字符串" 0.1kg"
但是如何提取" 0.1"来自string" 0.1kg" ?
答案 0 :(得分:2)
一个好方法是使用Scanner
。
例如:
let string = " 0.1 kg"
let scanner = Scanner.localizedScanner(with: string)
var weight = 0.0
if scanner.scanDouble(&weight) {
print(weight) // 0.1
}
scanDouble()
/ scanFloat()
方法解析各种各样的方法
浮点表示法(+12.34
,-56.78
,1.23e4
,1,23
等),
跳过初始空格,支持多个区域设置,并尽可能多地扫描给定的字符串。
答案 1 :(得分:1)
您可以使用
输入
let x = "0.1kg"
let weightt = x.components(separatedBy: CharacterSet.init(charactersIn: "0123456789.").inverted).joined(separator: "")
输出
0.1
答案 2 :(得分:0)
使用
let result = weightt.stringByReplacingOccurrencesOfString("kg", withString: "")
如果要从重量使用代码中删除所有字符。表示gm
而不是kg
。
let result = string.stringByReplacingOccurrencesOfString("[^A-Za-z]", withString: "",
options: NSStringCompareOptions.RegularExpressionSearch, range:nil).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
答案 3 :(得分:0)
也可以尝试:
let str = "0.1kg"
let decimal = str.components(separatedBy: CharacterSet.init(charactersIn: "0123456789.").inverted).first.flatMap { Float($0) }
print(decimal ?? "")
答案 4 :(得分:0)
您没有对输入的约束做任何说明,所以我假设它是一个有效的十进制数后跟一个单位。
如果是这样的话,您可以使用prefix
执行此操作:
let weight = "0.1kg"
let result = String(weight.characters.prefix {
"012346789.".characters.contains($0)) })