【发布时间】:2019-08-25 14:57:29
【问题描述】:
NSFormatter 的spellout 方法可让您将单词转换为数字。 NSString 的stringByReplacingOccurrencesOfString 可让您将千位等字符串转换为1000。您可以使用NSCharacterSet 从字符串中挑选整数。但是,我正在努力解决如何将数字和字符串的混合,例如 about 2.4 million 或 comes to 5 hundred 转换为数字。问题是将“240 万”从“关于”或其他文本中分离出来。
将拼写应用于“240 万”会产生 2400000。但是,将其应用于“大约 240 万”会产生错误。
extension NSString {
public var asNum: NSNumber {
// let stringValue = String(value: self)
let stringValue = self
let formatter = NumberFormatter()
formatter.isLenient = true
formatter.numberStyle = .spellOut
return formatter.number(from: stringValue as String) ?? -1
}
}
如何仅隔离属于有效数字的术语?
【问题讨论】:
-
与您的问题无关,但不要返回诸如
-1之类的幻数。将返回值设为可选,并为无效数字返回nil。 -
您希望忽略的多余单词是否总是在文本的开头?您可以尝试将字符串解析为数字。如果失败,请删除第一个单词并重试。继续删除下一个引导词,直到它起作用或文本用完为止。
-
是的,它们通常在开头。会试一试
标签: swift nsstring nscharacterset nsformatter