【发布时间】:2015-09-15 08:24:26
【问题描述】:
我有一个带有数字的文本值,该数字从零开始。例如"User number 054321",我通过下面的代码从文本中获取这个数字。
var phonenumber = "054321"
let myNumber = NSNumberFormatter().numberFromString("".join(phonenumber.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet)))
println(myNumber) //54321
我的问题是它从不接受以 0 值开头的第一个数字,但它接受所有其他数字。那么请问我的问题在哪里?
【问题讨论】:
-
数值的神奇之处在于
001、00001或01是同一个数字——数字1;如果您想保留输入的整个电话号码(带有前导零、数字或加号),则必须保留为字符串。 -
@holex 好的。所以我必须把它写成“0(myNumber!)”??还是有更好的办法?
-
我认为更好的方法是根本不将其转换为数值,因为
054321、004454321或+4454321意味着精确 相同的电话号码,例如英国。想想当您开始将它们转换为数值并稍后强制添加前导零时您会得到什么......您将得到04454321和054321,这是两个完全不同的电话号码,您可以确保其中一个是完全invalid,而原始输入是valid。 -
感谢您提供详细信息@holex
标签: ios swift nsnumber nsnumberformatter