NSScanner,乙個陌生的條件判斷利器

2021-10-09 08:49:45 字數 3537 閱讀 4952

nsscanner類是乙個類簇的抽象父類,該類簇為乙個從nsstring物件掃瞄值的物件提供了程式介面。

nsscanner物件把nsstring 物件的的字元解釋和轉化成 number和string 型別的值。在建立nsscanner物件的時候為它分配字元(string ),當你從nsscanner物件獲取內容的時候,它會從頭到尾遍歷字串(string)。

在 nsscanner 物件掃瞄字串的時候,你可以通過設定屬性characterstobeskipped忽略某些字元。在掃瞄字串之前,那些位於忽略字符集中的字元將會被跳過。預設的忽略字元是空格和回車字元。

可以通過[[scanner string] substringfromindex:[scanner scanlocation]]獲取未掃瞄的字串。

+ (instancetype)scannerwithstring:(nsstring *)astring

+ (id)localizedscannerwithstring:(nsstring *)astring

- (instancetype)initwithstring:(nsstring *)astring

@property(readonly, copy) nsstring *string
@property nsuinteger scanlocation

@property bool casesensitive

@property(copy) nscharacterset *characterstobeskipped

@property(retain) id locale

- (bool)scancharactersfromset:(nscharacterset *)scanset   intostring:(nsstring * _nullable *)strin**alue;

- (bool)scanuptocharactersfromset:(nscharacterset *)stopset intostring:(nsstring * _nullable *)strin**alue;

- (bool)scanstring:(nsstring *)string intostring:(nsstring * _nullable *)strin**alue;

- (bool)scanuptostring:(nsstring *)stopstring intostring:(nsstring * _nullable *)strin**alue;

- (bool)scandecimal:(nsdecimal *)decimalvalue;

- (bool)scandouble:(double *)doublevalue;

- (bool)scanfloat:(float *)floatvalue;

- (bool)scanhexdouble:(double *)result;

- (bool)scanhexfloat:(float *)result;

- (bool)scanhexint:(unsigned int *)intvalue;

- (bool)scanhexlonglong:(unsigned long long *)result;

- (bool)scanint:(int *)intvalue;

- (bool)scaninteger:(nsinteger *)value;

- (bool)scanunsignedlonglong:(unsigned long long *)unsignedlonglon**alue;

@property(getter=isatend, readonly) bool atend;

#import 

@inte***ce conditionjudgmentcontroller : nsobject

//輸入框中只能輸入數字和小數點,且小數點只能輸入一位,引數number 可以設定小數的位數,該函式在-(bool)textfield:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string呼叫;

+(bool)isvalidaboutinputtext:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string decimalnumber: (nsinteger) number;

@end

import "conditionjudgmentcontroller.h"

@implementation conditionjudgmentcontroller

+(bool)isvalidaboutinputtext:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string decimalnumber:(nsinteger)numberelse

if ( [textfield.text isequaltostring:@""] && [string isequaltostring:@"."] )

short remain = number; //保留 number位小數

nsuinteger strlen = [tempstr length];

if(pointrange.length > 0 && pointrange.location > 0)

if(strlen > 0 && (strlen - pointrange.location) > remain+1)

}nsrange zerorange = [textfield.text rangeofstring:@"0"];

if(zerorange.length == 1 && zerorange.location == 0)else}}

}nsstring *buffer;

if ( ![scanner scancharactersfromset:numbers intostring:&buffer] && ([string length] != 0) )else

}@end

注意:上面的方法要結合uitextfield的**方法使用

-(bool)textfield:(uitextfield *)textfield shouldchangecharactersinrange:(nsrange)range replacementstring:(nsstring *)string

平時讀者在進行條件判斷時,可能使用正規表示式或者用if語句比較多一點,其實nsscanner類為我們提供了乙個非常好的方式進行判斷。把它們結合起來使用,可以獲得更好的效果。

乙個陌生女人的來信

發信人 aitong amethyst喜歡的顏色 冷靜而不乏熱情和優雅 信區 movie 標 題 white rose 乙個陌生女人的來信 發信站 北大未名站 2005年03月20日02 18 52 星期天 轉信 乙個孩子暗中懷有的不為人察覺的愛 孤獨中的孩子全部的熱情去激起 乙個孩子乙個少女偶然產...

看《乙個陌生女人的來信》

好久都沒有看完一部 的時候還想接著再看第二遍了。可是 乙個陌生女人的來信 我忍不住看了兩遍。熱烈奔放卻牢牢壓在心底的愛情被細膩地貫穿在整個 裡。對白不多,卻恰到好處。更多的是無聲的神態,沉默裡透著最有力的語言。雖然我很喜歡這部 但並不想說 強烈推薦您去看 或者 經典,一定要看 之類的話。因為也許你我...

如何熟悉乙個完全陌生的系統

作為工程師,在職業生涯中不可避免的會遇到以下場景 1.入職新公司或者轉崗到新部門,如何有條不紊地熟悉已有系統?2.支援陌生系統的迭代開發或者維護,如何快速上手?3.所在團隊同事離職或轉崗,需要你接手相關系統,如何盡快進入角色?面對上述場景,梳理一套方 從而有序 高效地應對十分必要。筆者結合自身經驗和...