介紹
我們平常在編寫一些文本的輸入框時有時候需要校驗、判斷文本框是否為空。但是ios判斷的時候一般會使用(.length)可是有時候會出現一些問題!
? 比如用戶在輸入框里面什么都沒有輸入直接敲空格或者有換行符的時候會出現(.length)長度不為0。而有時候我們不希望這種內容提交到服務器你該怎么辦呢!
1.我么直接用字符串替換去除空格和換行
NSString* str=nil;
//1.去掉首尾空格和換行符
str = [strstringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]];
//2.去掉所有空格和換行符
str = [strstringByReplacingOccurrencesOfString:@"\r"withString:@""];
str = [strstringByReplacingOccurrencesOfString:@"\n"withString:@""];
這種方法輕松了剔除了空格和換行 可問題來了!有時候用戶輸入的內容里面就需要有空格和換行 你替換掉后 改變了用戶的原始想輸入的內容 而且我們的跟我們盡量不改變用戶意愿的UE有背,那該怎么幫呢?這就需要我們用接下里的方法了
2.NSCharacterSet
NSCharacterSet其實是許多字符或者數字或者符號的組合,在網絡處理的時候會用到
NSMutableCharacterSet*base = [NSMutableCharacterSet lowercaseLetterCharacterSet];//字母
NSCharacterSet*decimalDigit = [NSCharacterSet decimalDigitCharacterSet];//十進制數字
[baseformUnionWithCharacterSet:decimalDigit];//字母加十進制
NSString*string =@"ax@d5s#@sfn$5`SF$$%x^(#e{]e";
//用上面的base隔開string然后組成一個數組,然后通過componentsJoinedByString,來連接成一個字符串
NSLog(@"%@",[[stringcomponentsSeparatedByCharactersInSet:base]componentsJoinedByString:@"-"]);
[baseinvert];//非字母加十進制
NSLog(@"%@",[[stringcomponentsSeparatedByCharactersInSet:base]componentsJoinedByString:@"-"]);
答應結果:
ax@d-s#@sfn$-`SF$$%x^(#e{]e
NSCharacterSet除了上面的操作處理還有很多用途:
過濾特殊字符號
在iOS中 ??可以使用stringByTrimmingCharactersInSet函數過濾字符串中的特殊符號
首先自己定義一個NSCharacterSet, 包含需要去除的特殊符號
NSCharacterSet*set = [NSCharacterSetcharacterSetWithCharactersInString:@"@/:;()¥「」"、[]{}#%-*+=_\\|~<>$€^?'@#$%^&*()_+'\""];
由于NSString中有全角符號和半角符號, 因此有些符號要包括全角和半角的
然后調用stringByTrimmingCharactersInSet
NSString*trimmedString = [stringstringByTrimmingCharactersInSet:set];
trimmedString就是過濾后的字符串
去除空格回車
NSString *temptext = [messageTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSString *text = [temptext stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet ]];
第1行是去除2端的空格
第2行是去除回車
去掉首尾指定的字符集
NSString*strMsg=@"我愛北京天安門";
idcs= [NSCharacterSetcharacterSetWithCharactersInString:@"天門"];
NSString*strResult=[strMsgstringByTrimmingCharactersInSet:cs];
去除指定的字符集
NSString*strMsg=@"我愛北京天安門";
NSCharacterSet*cs= [NSCharacterSet characterSetWithCharactersInString:@"天門"];
NSMutableString*theString=[NSMutableStringstringWithString:strMsg];
NSString*strResult= [selfclearnIllegitCharacters:theStringandCharacterSet:cs];
//清除敏感詞語,根據給定的字符串&字符集
- (NSString*)clearnIllegitCharacters:(NSMutableString*)originString andCharacterSet:(NSCharacterSet*)cs{
NSString*strResult=nil;
NSRangerange2;
do{
range2=[originStringrangeOfCharacterFromSet:csoptions:NSLiteralSearch];
if(range2.location!=NSNotFound) {
//[originString deleteCharactersInRange:range2];
[originStringreplaceCharactersInRange:range2withString:@"*"];
}
}while(range2.location!=NSNotFound);
strResult=[[NSStringalloc]initWithString:originString];
returnstrResult;
}
...
NSCharacterSet的用途還有好多我就不一一舉例了 有興趣的大家可以試一下 下面是NSCharacterSet的各個枚舉類型的含義如下有時間大家可以試一下
NSCharacterSet的各個枚舉類型的含義如下:
1controlCharacterSet//控制符
2whitespaceCharacterSet//空格
3whitespaceAndNewlineCharacterSet//空格換行
4decimalDigitCharacterSet//小數
5letterCharacterSet//文字
6lowercaseLetterCharacterSet//小寫字母
7uppercaseLetterCharacterSet//大寫字母
8nonBaseCharacterSet//非基礎
9alphanumericCharacterSet//字母數字
10decomposableCharacterSet//可分解
11illegalCharacterSet//非法
12punctuationCharacterSet//標點
13capitalizedLetterCharacterSet//大寫
14symbolCharacterSet//符號
15newlineCharacterSet//換行符
下面該說我們開始的問題了說到這里我不說大家應該也該知道怎么 去校驗輸入框純空格和回車的問題了對就是用whitespaceAndNewlineCharacterSet
//是否是純空格或者換行
-(BOOL)isEmpty {
if(!self) {
returntrue;
}else{
//A character set containing only the whitespace characters space (U+0020) and tab (U+0009) and the newline and nextline characters (U+000A–U+000D, U+0085).
NSCharacterSet*set = [NSCharacterSetwhitespaceAndNewlineCharacterSet];
//Returns a new string made by removing from both ends of the receiver characters contained in a given character set.
NSString*trimedString = [selfstringByTrimmingCharactersInSet:set];
if([trimedStringlength] ==0) {
returntrue;
}else{
returnfalse;
}
}}
好了說了這么多 就不啰嗦了 !不經常寫也不熟悉 ?有問題的希望大家指出 我會改進 謝謝!