字符串相关操作:
♠创建字符串:
NSString* temp = @”字符串的内容”; //这是一个不可变的串(可变的在下面)
//temp指向一个字符串常量,不在堆区分配内存,不能dealloc,无需release和retain,在整个程序运行过程中都存在
♠创建可变字符串并且初始化
NSMutableString* string = [[NSMutableString alloc] initWithString:@"56"]; //创建一个可变字符串并初始化为:56
♠charstr[100] = “hello world”; //直接创建一个字符数组
♠stringWithFormat
可以将各种类型的变量整合成一个NSString的串(创建一个格式化的串)
NSString*str3=[NSStringstringWithFormat:@”%d%f %s %@",a,b,str2,str1];
♠stringWithString
创建一个已有字符串的副本(相当于复制一个)
NSString* str4 = [NSString stringWithString:str1]; //str4是str1的复制版
♠stringWithUTF8String
将c语言的串转化成NSStr串()
NSString* str5 = [NSString stringWithUTF8String:str2]; //str2是c的字符串,,str5是OC的NSString.
♠实例方法创建(把任意形式的串转换为OC的NSString)
NSString*str6 = [[NSString alloc] initWithFormat:@"组合:%d %@",a,str1];//创建并组合任意个数的串
♠求串长
NSLog(@"%lu",str6.length); //输出字符串str6的长度
♠遍历字符串
NSUInteger len = str6.length; //NSUInteger相当于int
for (int i = 0; i<len; i++)
{
NSLog(@"%C",[str6characterAtIndex:i]); //数组下标索引
}
♠创建一个可变字符串(可以对串进行增删改操作,不可变串不行)
NSMutableString * str =[[NSMutableString alloc] init];
♠插入串
[strinsertString:@"hello" atIndex:0]; //在0位置插入hello,保存到str
♠替换串内容
[strreplaceCharactersInRange:NSMakeRange(str.length-1, 1)withString:@"k"];//在长度减1的位置插入1位宽的k 保存到str
♠在串后面追加串
[str appendString:@"world"];//在str的最后面追加world
♠OC的NSString 转成 C的字符串
const char *str3 = [str1UTF8String]; //str1是OC的NSString 转成C的str3
♠OC的NSString 转 数字串
NSString * str4 =@"123"; //内容为数字的NSString串
NSLog(@"%d %g",[str4 intValue],[str4doubleValue]); //分别转换为int 和 double
♠大小写转换
NSString * str6 = [str5uppercaseString]; //把str5中的小写字母转换成大写字母保存到str6
NSString * str7 = [str6lowercaseString];//把str6中的大写字母转换成小写字母保存到str7;
♠字符拼接
NSString * str8 = [str5stringByAppendingFormat:@"%@",str6]; //把str5和str6拼接起来保存到str8中
♠去除字符串两端的指定字符
NSString * str6 =@",md123./";
NSCharacterSet * mySet =[NSCharacterSet characterSetWithCharactersInString:@",md./"]; //去除两端的 ,md./
NSString * str7 = [str6stringByTrimmingCharactersInSet:mySet]; //输出新的串
NSLog(@"%@",str7);
♠两个字符串的内容比较(比较str1 和 str2的内容)
if ([str1 compare:str2]==NSOrderedSame)
{
NSLog(@"Equal");
}
else if ([str1compare:str2]==NSOrderedDescending)
{
NSLog(@"Descending");
}
else
{
NSLog(@"Ascending");
}
♠比较字符串是否等于另一个字符串
if ([str3 isEqualToString:str2]== YES) //判断str3 是否等于 str4
{
NSLog(@"相等");
}
♠字符串比较的特殊情况
NSString * str4 = nil; // nil相当于0
if ([str4 compare:str3] ==NSOrderedSame)
{
NSLog(@"equal"); //右边是空对象的时候 返回0,,,而NSOrderedSame的 值恰恰是0 所以相等
}
♠另一种特殊情况
NSString * str5 = @""; //str5是字符个数为0的串 但不是0 (0是nil)
/////////// 关于字符串的操作暂时到这里来源于day12 ////////////////
♠关于查找字符串中制定字符的位置以及替换
NSMutableString * string=[NSMutableString stringWithString:@"When I was young, I loved a girl inneighbor class."] ;//创建一个可变字符串并且赋值
NSRange start =[string rangeOfString:@"young"];//注意NSRange
NSRange end = [stringrangeOfString:@"girl"];
//NSRange创建的变量默认都有”该变量名.location”(位置) 和 “该变量名.length”(长度)
//NSUInteger NSInteger 不是类,只是unsigned long 和int的typedef
NSUInteger len = end.location -start.location + end.length; //末位置减去首位置加末串的长度
start.length = len;
stringreplaceCharactersInRange:start withString:@"a teacher, I rather to teachstudent"];//用指定的串代替上面的串
NSLog(@"%@",string);
♠查找某串中指定的字符串
[str2 substringWithRange:NSMakeRange(3, 7)]//在串str2中从第3个开始找7个
[str2 substringFromIndex:5]//在str2中从第5个开始找
str2 substringToIndex:5 //在str2中从第0个开始到第5个
♠交换字符串中的元素
[array exchangeObjectAtIndex:iwithObjectAtIndex:len-i-1];//将数组中第i个元素和第len-i-1个元素交换位置
//数组ß----------à字符串
NSString*string = @"d**b*c*love";
NSMutableArray*marr = [[NSMutableArray alloc]init];
//从字符串遍历到数组
for(int i = 0;i < string.length;i++)
{
marr[i] = [string substringWithRange:NSMakeRange(i, 1)];
}
NSLog(@"%zi",marr.count);
NSLog(@"%@",marr);
NSMutableString *strr = [[NSMutableStringalloc]init];
//从数组遍历到字符串
for (int i = 0;i <marr.count;i++)
{
[strr appendString:marr[i]];
}
NSLog(@"%zi",strr.length);
NSLog(@"%@",strr);