Swift:Textfield只有数字和“。”

时间:2015-03-23 11:54:26

标签: swift

有没有办法在文本字段中只允许双值? 我想在里面存一笔钱,比如1.50€。

为了保存该值,我删除了这样的欧元符号:

    var moneyValue: String = amountField.text
    var stringLength = countElements(moneyValue)
    var substringIndex = stringLength - 2
    var finishedValue: String =  moneyValue.substringToIndex(advance(moneyValue.startIndex, substringIndex))

或者是否有另一种解决方案?

提前致谢!

2 个答案:

答案 0 :(得分:1)

我已经编写了一个函数,只需检查它是否适合您:

 func formatAsPrice(priceString: NSString) -> NSString {

    var price: NSNumber = NSNumber(Double: priceString.doubleValue) ;

    var formatter = NSNumberFormatter()
    formatter.numberStyle = .CurrencyStyle
    formatter.stringFromNumber(price)

    formatter.locale = NSLocale(localeIdentifier: "YOUR_Locale")
    var priceNumber : NSString = formatter.stringFromNumber(price)!

    return priceNumber

}

答案 1 :(得分:0)

有两种解决方案。一种是使用NSNumberFormatter并尝试解码文本值。第二种是使用NSRegularExpression并匹配"^[+-]?\\d*(\\.\\d{0,2})?$"。如果您只想要合法的分值,后者会阻止输入1.234等金额。当然,您可以检查来自NSNumberFormatter的值是否合法,并使用litte算法。