ios - 如何快速从 UItextfield 读取特定格式( XXX.X )?

标签 ios swift uitextfield textfield

我想以 XXX.X 格式从文本字段中快速读取文本。假设采用 XXX.X 格式,我的意思是:

  • 123.3 有效
  • 48.2 有效
  • 1.4 有效
  • 4 有效
  • 4.3.4 无效
  • 5555.5 无效
  • 123.34 无效

换句话说,句点左侧的文本最多只能有 3 个字符,如果用户没有输入“.”,则左侧的文本只能有 1 个字符或根本没有字符

p>

目前,我的代码仅适用于限制“.”的数量

func textField(textField: UITextField,shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool
{
    let countdots = textField.text.components(separatedBy: ".").count)! - 1

    if countdots > 0 && string == "."
    {
        return false
    }
    return true
}

最佳答案

func valid(_ s:String) -> Bool {
    func roundToPlaces(value:Double, places:Int) -> Double {
        let divisor = pow(10.0, Double(places))
        return round(value * divisor) / divisor
    }
    if let num = Double(s) {
        if num >= 1000.0 {
            return false
        }
        if roundToPlaces(value:num, places:1) != num {
            return false
        }
        return true
    } else {
        return false
    }
}

测试您的输入:

let test = [
    "123.3",
    "48.2",
    "1.4",
    "4",
    "4.3.4",
    "5555.5",
    "123.34"
]

for s in test {
    print(valid(s))
}

结果:

true
true
true
true
false
false
false

这就是您的输入和所需的输出。

关于ios - 如何快速从 UItextfield 读取特定格式( XXX.X )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47604502/

相关文章:

ios - 如何在 UIKeyboard 可见时更改 UITableView 大小?

ios - 单击按钮后立即执行 SwiftUI 按钮操作,而不是单击释放

ios - 在 Realm 中,当我更新它时,它只在第 0 个索引中更新如何解决它?

ios - 如何动态更改条形按钮的名称

ios - Decimal Pad 键盘在 iOS 8 中无法正常工作

ios - 编辑期间阻塞的字段。 ( swift - iOS)

ios - 如何在 iOS 上禁用日期元格式检测?

ios - 调度队列不等待

ios - 如何跟踪自定义 View 外的点击

xml - 从 XML 响应 Swift 中获取值(value)