Objective-C基础—字符串对象NSString,NSMutableString

一个NSString对象可以存储一段Unicode字符。在cocoa中,所有和字符、字符串相关的处理都是使用NSString来完成。值得一提的是,NSString继承自NSObject,而字符串取下标(Index)和其它类型的数组一样从0开始。NSString所指向的字符串往往是字符串常量,是不可变的。通过NSString对字符串进行的修改通常是生成新的字符串常量替换旧的,并不是在原有字符串上进行修改。NSMutableString类用来创建可以更改字符串的字符串对象,因为是NSString的子类,所以可以使用NSString类的所有方法。

<span style="font-size: 18px;">1.创建一个空字符串 
</span><span style="font-size:18px;">NSString * str = [[NSString alloc] init]; 
NSString * str = [NSString string];   //数组和字典也可以使用这种方式</span>
<span style="font-size: 14px; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"><span style="font-family:Arial;"> </span></span><span style="font-size:18px;"><span style="font-family:Arial;"><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);">//快速创建一个字符串常量</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string1 = @"abc";</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string2 = @"cde";</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSLog(@"%@ %@",string1,string2);</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> //创建一个格式化的字符串 (内存在堆区)</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string3 = [[NSString alloc]initWithFormat:@"整数: %d",10];</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSString *string4 = [[NSString alloc]initWithFormat:@"浮点数: %f",10.0];</span><span style="line-height: 24px;"><br style="box-sizing: content-box; color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);" /></span><span style="color: rgb(51, 51, 51); line-height: 24px; background-color: rgb(245, 245, 245);"> NSLog(@"%@ %@",string3,string4);</span></span><span style="font-family:SimHei;">
</span></span><span style="font-family: Arial; font-size: 18px;"> 
</span><span style="font-size:18px;font-family: Arial;">2.快速创建一个字符串 
NSString * str = [[NSString alloc] initWithString:dStr]; //dStr是字符串对象
NSString * str = [NSString stringWithString:@"Hello!",]; 
 
3.创建一个格式化字符串 
NSString * str = [[NSString alloc] initWithFormat:@"%d",520]; 
NSString * str = [NSString stringWithFormat:@"%.2f",3.1415926];
         
4.用标准c创建字符串
char *Cstr ="今天很悲剧!";   //取字符串的地址
NSString *str = [[NSString alloc] initWithCString:Cstr];  
   NSLog(@"str:%@",str);  
[str release];  
 
5.从设备上输入字符串 
charbuffer[1000];   //使用一个缓冲区 
   NSLog(@"请输入字符串:"); 
   scanf("%s",buffer); 
    NSString *str = [NSString stringWithUTF8String:buffer];  //将缓冲区赋给NSString变量 
   NSLog(@"字符串str = %@",str); 
 
6.转换为基本数据类型 
NSString *str = @"5"; 
float f1 = [str floatValue]; 
   NSLog(@"str = %.2f",f1); 
 
7.拼接字符串 
   //方式1
NSString *appStr = [str1 stringByAppendingString:str2]; 
   //方式2
NSString *appStr = [str1 stringByAppendingFormat: @"%@",str2];  
   //方式3
NSString *appStr = [[NSString alloc] initWithFormat: @"%@%@",str1,str2];    
              
8.查找字符串 
NSString *str = @"abcdefghijklmn"; 
NSString *str1 = @"ijk";
NSRange range = [str rangeOfString:str1]; 
   NSLog(@"%@",NSStringFromRange(range)); 
   NSLog(@"%d",range.location);
   NSLog(@"%d",range.length);
    if(range.location != NSNotFound) { 
       NSLog(@"str found"); 
   }else{ 
       NSLog(@"str not found"); 
   }                         
          
9. //1字符串拆分为数组 
NSString *str = @"1,2,3,4,5,6,7"; 
NSArray *array = [str componentsSeparatedByString:@","]; 
    for(int i= 0;i < [array count];i++){
       NSLog(@"array[%d] = %@",i,array[i]); 
    }
   //2从数组合并元素到字符串
NSArray *array = [[NSArray alloc] initWithObjects:@"1",@"2",@"3",@"4",@"5",@"6",@"7",nil];
NSString *str = [array componentsJoinedByString:@","];
    NSLog(@"string:%@",str);
 
10.比较字符串 
Objective-C中,NSString的==操作符比较的是字符串地址,不是字符串内容,如果需要比较内容则需要使用其它的方法。
   //1 isEqualToString
   if ([str1 isEqualToString:str2]) { 
       NSLog(@"str1 is EqualToString str2"); 
   }else{ 
       NSLog(@"str1 is not EqualToString str2"); 
   }     
   //2 strcmp函数
char str1[] = "string!"; 
char str2[] = "string!";  
if(strcmp(str1, str2) == 0) {  
        NSLog(@"1"); 
    } 
   //3compare方法(comparer返回三种值)      
NSString *str1 =@"string!";  
NSString *str2 =@"string!";      
BOOL isOk = [str1 compare:str2] ==NSOrderedSame;      
   NSLog(@"isOk:%d",isOk);      
   //NSOrderedSame判断两者内容是否相同  
   //NSOrderedAscending判断两对象值的大小(按字母顺序进行比较,str2大于str1为真) 
   //NSOrderedDescending判断两对象值的大小(按字母顺序进行比较,str2小于str1为真)
   //4不考虑大小写比较字符串
NSString *str1 =@"string!";  
NSString *str2 =@"string!";      
BOOL isOk = [str1 caseInsensitiveCompare:str2] ==NSOrderedSame;   
   NSLog(@"isOk:%d",isOk);    
BOOL isOk = [str1 compare:str2 options:NSCaseInsensitiveSearch |NSNumericSearch] == NSOrderedSame;  
   NSLog(@"isOk:%d",isOk);   
   //NSCaseInsensitiveSearch:不区分大小写比较
   //NSLiteralSearch:进行完全比较,区分大小写
    //NSNumericSearch:比较字符串的字符个数,而不是字符值。  

11.改变字符串的大小写
NSString *str1 =@"string!";  
NSString *str2 =@"string!";    
NSString *str3 =@"string!";  
    NSLog(@"str1:%@",[str1 uppercaseString]);  
    NSLog(@"str2:%@",[str2 lowercaseString]);  
    NSLog(@"str3:%@",[str3 capitalizedString]);   
   //uppercaseString返回转换为大写的字符串
   //lowercaseString返回转换为小写的字符串
   //capitalizedString返回每个单词首字母大写的字符串
 
12.截取子串
NSString *str =@"string!";  
NSString *str1 = [str substringToIndex:3];   //截取str
NSString *str2 = [str substringFromIndex:3]; //截取ing!
NSString *str3 = [str substringWithRange:NSMakeRange(0, 4)]; //截取stri
   //-substringToIndex: 从字符串的开头一直截取到指定的位置,但不包括该位置的字符
   //-substringFromIndex: 以指定位置开始(包括指定位置的字符),并包括之后的全部字符
   //-substringWithRange: 按照所给出的位置,长度,任意地从字符串中截取子串
  
13.遍历  
    NSString *str = @"abcd ef g h";
    NSMutableString *mStr = [str mutableCopy];
    NSMutableArray *marr = [[NSMutableArray alloc] init];
    for (int i = 0; i < [mStr length]; i++) {
        NSString *subStr = [mStr substringWithRange:NSMakeRange(i, 1)];
        if(![subStr isEqualToString:@" "]){
            [marr addObject:subStr];
        }
    }
    
    NSInteger lenthStr = [marr count];
----------------NSMutableString部分----------------
   NSMutableString类可以用来创建可以更改字符的字符串对象。因为该类是NSString类的子类,所以可以使用NSString类的所有方法。
 
1.NSMutableString生成:
NSMutableString *mStr1 =[NSMutableString string];
NSMutableString *mStr2 = [NSMutableString stringWithString:@"明天会更好!"];
NSMutableString *mStr3 = [[NSMutableString alloc] initWithFormat:@"%@",@"面包会有的!"];
 
2.给字符串分配容量 
NSMutableString*mStr;
    mStr =[NSMutableString stringWithCapacity:40]; //初始化容量为40字节,可增加;

3.添加元素:
NSMutableString *mStrBaby = [NSMutableString string];
    [mStrBaby appendString:@"熊"];
    [mStrBaby appendFormat:[NSString stringWithFormat:@"猫"]];

4.插入内容:
NSString *str = @"乖宝宝";
    [mStrBaby insertString:str atIndex:2];  //Index:i,从下标为i的元素开始后移,让出空位;
    [mStrBaby insertString:@"!" atIndex:[mStr length]]; //  在可变字符串的最后插入
 
5.替换内容:
   // 用于NSMutableString
[mStrBaby replaceCharactersInRange:NSMakeRange(2,3) withString:@"不乖了"]; 
   //在给定的范围内查找并替换,
   //在第四个参数范围内,查找第一个参数,若有找到用第二个参数替换第一个参数,第三个参数暂时我还不会用;
-(NSUInteger)replaceOccurrencesOfString:(NSString*)target withString:(NSString*)replacement options:(NSStringCompareOptions)opts range:(NSRange)searchRange;
 
6.删除内容:
[mStrBaby deleteCharactersInRange:NSMakeRange(2,3)]; 
    //删除指定范围(location=2,length=3)的字符串
7.将已有的字符串换成其它的字符串  
   [mStrBaby setString:@"功夫熊猫!"];
 
8.查找(返回字符串范围)
NSRange subRange = [mStrBaby rangeOfString:@"猫"]; 
   //查找字符串中是否包含“猫”,返回NSRange类型。
   //如果没查找到,则(subRange.location== NSNotFound)为真。
   if(subRange.location == NSNotFound){
       NSLog(@"String not found ");
   }else {
       NSLog(@"string is at index %i, length is %i", subRange.location,subRange.length);
    }
 
9.判断字符串内是否还包含别的字符串(前缀,后缀)
NSString *str = @"NSStringInformation.txt";
   //检查字符串是否以另一个字符串开头或结尾;
    [str hasPrefix:@"NSString"] == 1 ? NSLog(@"YES") :NSLog(@"NO"); //是否有前缀 NSString;
    [str hasSuffix:@".txt"] == 1 ? NSLog(@"YES") :NSLog(@"NO");    //是否有后缀 .txt;</span><span style="font-family: Arial; font-size: 18px;">
</span>


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值