Objective-C中使用NSString类操作字符串的方法小结
一、字符串切割
1、带节点的字符串,如@"<p>讨厌的节点<br/></p>"我们只想要中间的中文
处理方法:
NSString*string1=@"<p>讨厌的节点<br/></p>"; /*此处将不想要的字符全部放进characterSet1中,不需另外加逗号或空格之类的,除非字符串中有你想要去除的空格,此处<p/等都是单独存在,不作为整个字符*/ NSCharacterSet*characterSet1=[NSCharacterSetcharacterSetWithCharactersInString:@"<p/brh>"]; //将string1按characterSet1中的元素分割成数组 NSArray*array1=[string1componentsSeparatedByCharactersInSet:characterSet1]; NSLog(@"array=%@",array1); for(NSString*string1inarray1) { if([string1length]>0){ //此处string即为中文字符串 NSLog(@"string=%@",string1); } }
打印结果:
2016-01-1710:55:34.017string[17634:303] array=( "", "", "", "\U8ba8\U538c\U7684\U8282\U70b9", "", "", "", "", "", "", "", "", "" ) 2016-01-1710:55:34.049string[17634:303] string=讨厌的节点
2、带空格的字符串,如
@"helloworld"去掉空格
NSString*string2=@"helloworld"; /*处理空格*/ NSCharacterSet*characterSet2=[NSCharacterSetwhitespaceCharacterSet]; //将string1按characterSet1中的元素分割成数组 NSArray*array2=[string2componentsSeparatedByCharactersInSet:characterSet2]; NSLog(@"\narray=%@",array2); //用来存放处理后的字符串 NSMutableString*newString1=[NSMutableStringstring]; for(NSString*stringinarray1) { [newString1appendString:string]; } NSLog(@"newString=%@",newString1);
打印结果:
2016-01-1711:02:49.656string[17889:303] array=( hello, world ) 2016-01-1711:02:49.657string[17889:303]newString=helloworld
PS:处理字母等其他元素只需将NSCharacterSet的值改变即可。
+(id)controlCharacterSet; +(id)whitespaceCharacterSet; +(id)whitespaceAndNewlineCharacterSet; +(id)decimalDigitCharacterSet; +(id)letterCharacterSet; +(id)lowercaseLetterCharacterSet; +(id)uppercaseLetterCharacterSet; +(id)nonBaseCharacterSet; +(id)alphanumericCharacterSet; +(id)decomposableCharacterSet; +(id)illegalCharacterSet; +(id)punctuationCharacterSet; +(id)capitalizedLetterCharacterSet; +(id)symbolCharacterSet; +(id)newlineCharacterSetNS_AVAILABLE(10_5,2_0); +(id)characterSetWithRange:(NSRange)aRange; +(id)characterSetWithCharactersInString:(NSString*)aString; +(id)characterSetWithBitmapRepresentation:(NSData*)data; +(id)characterSetWithContentsOfFile:(NSString*)fName;
二、用字符将NSArray中的元素拼接起来
NSArray*array=[NSArrayarrayWithObjects:@"hello",@"world",nil]; //如要用,:等字符串拼接,只需将下面的@""空格换成@","或@":"即可 NSString*string=[arraycomponentsJoinedByString:@""]; NSLog(@"string=%@",string);
打印结果:
helloworld
三、截取子串:
这里以获取时间为例,利用NSDate获取到当前时间时,有时候只需要日期或者只需要时间
1、从字符串开头截取到指定的位置,如
//获取到当前日期时间 NSDate*date=[NSDatedate]; //定义日期格式,此处不重点讨论NSDate,故不详细说明,在后面会详细讨论 NSDateFormatter*dateformatter=[[NSDateFormatteralloc]init]; //设置日期格式 [dateformattersetDateFormat:@"YYYY-MM-ddHH:mm"]; //将日期转换成NSString类型 NSString*string=[dateformatterstringFromDate:date]; NSLog(@"\ncurrent=%@",string); //截取日期substringToIndex NSString*currentDate=[stringsubstringToIndex:10]; NSLog(@"\ncurrentDate=%@",currentDate);
打印结果:
current=2016-01-1711:12 currentDate=2016-01-17
2、抽取中间子串-substringWithRange
//截取月日 NSString*currentMonthAndDate=[stringsubstringWithRange:[NSMakeRange(5,5)]]; NSLog(@"currentMonthAndDate=%@",currentMonthAndDate);
打印结果:
currentMonthAndDate=06-27
3、从某一位置开始截取-substringFromIndex
//截取时间substringFromIndex NSString*currentTime=[stringsubstringFromIndex:11]; NSLog(@"\ncurrentTime=%@",currentTime);\
打印结果:
currentTime=11:25
四、比较字符串
NSString*first=@"string"; NSString*second=@"String";
1、判断两个字符串是否相同-isEqualToString方法
BOOLisEqual=[firstisEqualToString:second]; NSLog(@"firstisEqualtosecond:%@",isEqual);
打印结果:
firstisEqualtosecond:0
2、compare方法比较字符串三个值
NSOrderedSame//是否相同 NSOrderedAscending//升序,按字母顺序比较,大于为真 NSOrderedDescending//降序,按字母顺序比较,小于为真
BOOLresult=[firstcompare:sencond]==NSOrderedSame; NSLog(@"result:%d",result);