Objective-C中处理字符串的类是NSString和NSMutableString这两个,这两个的最大区别是NSString创建并初始化之后其字符串的内容和长度都不能进行动态的改变,除非重新赋值;而NSMutableString创建赋值之后其字符串的内容和长度都是可以动态的改变的,两者的基本用法大同小异,因此掌握了一个也就对另一个会使用了。
1、NSString类型字符串的基本使用
在C语言中,字符串我们使用char *,但是两者的区别是NSString是一个Objective-C对象,而char*是一个字节数组。在Objective-C中使用 @ 莱维NSString字符串常量赋值,而char * 则不需要 @ 符号。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//定义一个字符串,并对其赋值
NSString *str0 = @"Hello,I'm Evolution.cc.";
//字符串格式化,格式化中可以使用多种类型:NSString类型、int类型、char 类型
NSString *str1 = [NSString stringWithFormat:@"My name:%@ Age:%d E-mail:%s",@"Evolution.cc",26,"evolution.zyc@gmail.com"];
//字符串的赋值另一种方式
NSString *str2 = [NSString stringWithFormat:@"This is a string"];
//字符串转化为utf-8格式,参数为char类型
NSString *str3 = [NSString stringWithUTF8String:"string to utf-8 format"];
//字符串的合并
int i = 100;
char *chChar = "Evolution";
NSString *tem = @"This is a temp string.";
//在tem字符串的基础上继续添加字符,组成新的字符串
NSString *str4 = [tem stringByAppendingFormat:@"int:%d char:%s",i,chChar];
//在tem的基础上继续添加tem,组成一个新的字符串
NSString *str5 = [tem stringByAppendingString:tem];
//打印输出
NSLog(@"str0 = %@",str0);
NSLog(@"str1 = %@",str1);
NSLog(@"str2 = %@",str2);
NSLog(@"str3 = %@",str3);
NSLog(@"str4 = %@",str4);
NSLog(@"str5 = %@",str5);
}
每一个字符串都是由若干char字符组成的,字符串的遍历就是将字符串中的每一个字符提取。
//字符串的遍历
NSString *demoStr = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//获取字符串的长度
int length = [demoStr length];
NSLog(@"The length of demoStr is %d",length);
//对字符串进行遍历
for(int i = 0; i < length; i++){
char c = [demoStr characterAtIndex:i];
NSLog(@"The Character is %c in %d",c,i);
}
3、字符串之间的比较
isEqualToString 比较字符串是否完全相等,大小写不一样也无法完全匹配。
hasPrefixe 匹配字符串头
haSuffix 匹配字符串的尾巴
//字符串的比较
NSString *aStr = @"Evolution";
NSString *bStr = @"Evolution";
//字符串比较两者是否相等
if([aStr isEqualToString:bStr]){
NSLog(@"A 和 B 完全相等");
}else{
NSLog(@"A 和 B 不相等");
}
//字符串开头字符
if([aStr hasPrefix:@"E"]){
NSLog(@"字符串以E开头");
}
//字符串结尾字符
if([aStr hasSuffix:@"n"]){
NSLog(@"字符串以n结尾");
}
4、字符串的截取和大小写相关
NSString *str0 = @" my name is Evolution";
//截取字符串起始点到index为4之间的内容
NSString * to = [str0 substringToIndex:4];
NSLog(@"to = %@",to);
//截取字符index为2 到结尾之间的内容
NSString * from = [str0 substringFromIndex:2];
NSLog(@"from = %@",from);
//设置截取字符串的范围
//从第二位至第十位
NSRange rang = NSMakeRange(2, 10);
NSString * strRang = [str0 substringWithRange:rang];
NSLog(@"rang = %@",strRang);
//设置字符串首字母大写
NSLog(@"str0首字母大写:%@",[str0 capitalizedString]);
//设置字符串全部内容为大写
NSLog(@"str0大写:%@",[str0 uppercaseString]);
//设置字符全部内容为小写
NSLog(@"str0小写:%@",[str0 lowercaseString]);
5、字符串的搜索与替换
NSString *str0 = @"中文my name is Evolution";
NSString *temp = @"is";
NSRange rang = [str0 rangeOfString:temp];
NSLog(@"搜索的字符串在str0中起始点的index 为 %d", rang.location);
NSLog(@"搜索的字符串在str0中结束点的index 为 %d", rang.location + rang.length);
//将搜索中的字符串替换成为一个新的字符串
NSString *str = [str0 stringByReplacingCharactersInRange:rang withString:@"IOS Coder"];
NSLog(@"替换后字符串为%@", str);
//将字符串中" " 全部替换成 *
str = [str0 stringByReplacingOccurrencesOfString :@" " withString:@"@"];
NSLog(@"替换后字符串为%@", str);
项目中的体会:在实际的项目中感觉使用NSString比较多一点,主要用于值传递和临时变量等地方。但是项目中的需求都是千变万化的,因此每个项目每个功能部分都要根据实际的需求来选择合适的类来实现的。