超簡(jiǎn)單,iOS開(kāi)發(fā)--限制UITextField兩位小數(shù)的輸入

在項(xiàng)目開(kāi)發(fā)中,經(jīng)常會(huì)遇到限制文本框輸入內(nèi)容的需求,這就涉及到對(duì)字符串的處理,而對(duì)字符串的處理問(wèn)題,正則表達(dá)式是一個(gè)利器,今天就用正則表達(dá)式來(lái)實(shí)現(xiàn)限制UITextField兩位小數(shù)的輸入。

在UITextField的代理方法中進(jìn)行操作:

//參數(shù)一:range,要被替換的字符串的range,如果是新輸入的,就沒(méi)有字符串被替換,range.length = 0
//參數(shù)二:替換的字符串,即鍵盤即將輸入或者即將粘貼到textField的string
//返回值為BOOL類型,YES表示允許替換,NO表示不允許
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range 
replacementString:(NSString *)string
{
    //新輸入的
    if (string.length == 0) {
        return YES;
    }

   //第一個(gè)參數(shù),被替換字符串的range
   //第二個(gè)參數(shù),即將鍵入或者粘貼的string
   //返回的是改變過(guò)后的新str,即textfield的新的文本內(nèi)容
    NSString *checkStr = [textField.text stringByReplacingCharactersInRange:range withString:string];

    //正則表達(dá)式(只支持兩位小數(shù))
    NSString *regex = @"^\\-?([1-9]\\d*|0)(\\.\\d{0,2})?$";
   //判斷新的文本內(nèi)容是否符合要求
    return [self isValid:checkStr withRegex:regex];

}

//檢測(cè)改變過(guò)的文本是否匹配正則表達(dá)式,如果匹配表示可以鍵入,否則不能鍵入
- (BOOL) isValid:(NSString*)checkStr withRegex:(NSString*)regex
{
    NSPredicate *predicte = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [predicte evaluateWithObject:checkStr];
}

解釋的很詳細(xì),是不是超簡(jiǎn)單,幾行代碼就能搞定。
給大家推薦一下學(xué)習(xí)正則入門的一篇不錯(cuò)的鏈接,30分鐘入門,對(duì)于剛接觸正則的朋友來(lái)說(shuō),很適合

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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