Swift UITextField 限制輸入:小數(shù)點(diǎn)后倆位,總值小于1億

 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
        
        // 限制小數(shù)點(diǎn)后倆位
        var futureString: String = textField.text ?? ""
        if string == "" {
            return true
        }
        if !matchCharacter(c: string) {
            return false
        }
        futureString.insert(Character(string), at: futureString.index(futureString.startIndex, offsetBy: range.location))
        
        // 設(shè)置欠款金額最大值
        if futureString.DoubleValue >= 100000000 {
            return false
        }
        var flag: Int = 0
        var array: [Character] = [Character]()
        
        for c in futureString {
            array.append(c)
        }

        if string == "." {
            // 如果插入小數(shù)點(diǎn),要判斷當(dāng)前光標(biāo)的位置和字符串的長度
            if futureString.count - range.location > 3 {
                return false
            }
        }
        
        for  c in array.reversed() {
            if c == "." {
                
                if isEqual(arr: array) {
                   return false
                }
                // limited 是 2 (倆位)
                if flag > limited {
                    if range.location == futureString.count - 1 || range.location == futureString.count - 2 || range.location == futureString.count - 3{
                        return false
                    } else {
                        return true
                    }
                }
            }
            flag += 1;
        }
        return true
    }
    
    /// 判斷數(shù)組中是否有倆個小數(shù)點(diǎn)
    func isEqual(arr: [Character]) -> Bool {
        var flag: Int = 0
        
        for c in arr {
            if c == "." {
                flag += 1
                if flag >= 2 {
                    return true
                }
            }
        }
        return false
    }
    
    // 正則匹配數(shù)字和小數(shù)點(diǎn)
    func matchCharacter(c: String) -> Bool {
       let reg = "^[0-9.]+$"
       let pre = NSPredicate(format: "SELF MATCHES %@", reg)
       if pre.evaluate(with: c) {
           return true
       }else{
           return false
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容