【发布时间】:2018-03-05 14:50:41
【问题描述】:
我正在使用输入类型号从UITextField 格式化String:
示例:如果我有“10000”,我将“10000”格式化为“10 000”String。
问题:稍后我需要访问此 String 的 Int 值,但在转换时,我遇到了异常,因为 String 的格式不正确,无法转换,因为它包含空格。 (例如:Int("10 000") 不起作用。)
所以我想在转换为Int 之前从String 中删除空格,方法是使用:myString.trimmingCharacters(in: .whitespaces),但空格仍然存在。
我正在使用以下extension:
extension Formatter {
static let withSeparator: NumberFormatter = {
let formatter = NumberFormatter()
formatter.groupingSeparator = " "
formatter.numberStyle = .decimal
return formatter
}()
}
extension BinaryInteger {
var formattedWithSeparator: String {
return Formatter.withSeparator.string(for: self) ?? ""
}
}
我还尝试通过执行以下操作从我的格式化程序中检索原始 NSNumber:
print(Formatter.withSeparator.number(from: "10 000").intValue)
但结果也是nil。
有什么想法吗?
【问题讨论】:
-
因为
formatter可能与myFormatter不同,否则工作顺利,输入字符串"10 000"的整数值为10000– btw, trimming 只修剪前导和尾随字符。 -
我正在使用来自 Formatter 扩展的相同内容
-
然后发布您的真实代码,您实际上按原样使用。
-
谢谢,您对
trimming的第一个回答为我指明了方向。我需要replacingOccurences(...)删除空格,愚蠢的错误 -
@AnthonyR
Formatter.withSeparator.number(from: "10 000")?.intValue为我打印"Optional(10000)\n"。您确定您的字符串不包含分组分隔符以外的空格吗?
标签: swift