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);