如何添加一个“。”在我输入+ 3个数字字符后

时间:2019-02-04 00:39:00

标签: swift string-formatting

我想格式化我的数字输入并添加一个“。”。最多三个数字字符(0 <= 999.99)之后...并且能够添加“。”每当我想要...

因此我将文本字段的键盘类型更改为十进制(已经包含点)...

  1. 我需要验证0.000 <= 999.999

  2. 的数字范围
  3. 我需要另一个验证,该验证将允许我在“。”之后键入3个十进制数字。

 123.456
 4.546
 or 85.60

我发现的只是其他使用逗号和货币的页面示例,但是每3位数字会添加一个符号...

这是我最好的解决方法:

func textField(_ textField: UITextField, shouldChangeCharactersIn 
   range: NSRange, replacementString string: String) -> Bool {
   guard let text = textField.text, let decimalSeparator = 
   NSLocale.current.decimalSeparator else {

        return true 

    }

    var splitText = text.components(separatedBy: decimalSeparator)
    let totalDecimalSeparators = splitText.count - 1
    let isEditingEnd = (text.count - 3) < range.lowerBound

    splitText.removeFirst()


    if
        splitText.last?.count ?? 0 > 1 && string.count != 0 &&
        isEditingEnd

    {
        return false
    }

    // If there is already a dot I don't want to allow further dots
    if totalDecimalSeparators > 0 && string == decimalSeparator {
        return false
    }

    // Only allow numbers and decimal separator
    switch(string) {
    case "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", decimalSeparator:
        return true
    default:
        return false
    }
}

这是要键入数字(最多10个数字),然后按“。”。点,则仅接受小数点后2位

 12.30
 1540.67
 128438.78

任何帮助都可以接受!预先谢谢你!

0 个答案:

没有答案