ios不可改变NSString类和可改变NSMutableString类的使用


一, NSString的常用用法
 
1,创建对象两种方法
 
1)   ”-”号方法  alloc + 初始化
initWithString  
NSString *str = [[NSString alloc] initWithString:@"iPhone 4"];
 
 
initWithFormat  
这种方法比initWithString更强大可以设置格式,如上述的字符串” iPhone 4” 可以写成
NSString *str = [[NSStringalloc] initWithFormat:@"iPhone%d",4];
这里的4是自定义的可以根据自己的需要随时改变,
 
 
 
2)   这是构造便利器
stringWithString
            NSString *str = [NSString stringWithString:@"iPhone5"];
 
stringWithFormat
同样这种方法比stringWithString功能强大,可以设置输出格式
            NSString *str = [NSString stringWithFormat:@"iPhone%d",5];
这里的5是自定义的可以根据自己的需要随时改变
其实凡是方法名最后是以Format结尾的都是可以设置格式的,下面不在赘述
2,求字符串长度    length
 
     NSString *str = [NSString stringWithString:@"Helloworld];
     NSUInteger length = [str length];
     NSLog(@"length = %lu",length);
    这里长度应设置为无符号长整型
3,根据给定的下标获取字符串中的字符
 
     NSString *str = [NSStringstringWithString:@"Hello world];
      unichar chara = [str characterAtIndex:5];
      NSLog(@"%c",chara);
 
4,判断是否以指定的字符串开头或者以指定的字符串结尾
    1),判断一个字符串是否以某个字符串开头  hasPrefix, 返回值为BOOL类 
          例如:判断一个字符串是否以http开头是否以.com结束
     NSString *str = [[NSString  alloc]initWithFormat:@"http://www.baidu.com"];
     判断是否以http开头
     BOOL  isPrefix = [str hasPrefix:@"http"];
      NSLog(@"%d",isPrefix);
2),判断一个字符串是否以某个字符串结尾  hasSuffix, 返回值为BOOL类
   例如判断一个字符串是否以.com结束
 
    BOOL isSuffix = [str hasSuffix:@".com"];
    NSLog(@"%d",isSuffix);
 
5,查找指定字符串的范围
NSRange是结构体类型的类型重定义,range是结构体类型
NSRange range = [str4 rangeOfString:@"ttp"];
        if (range.length == 0) {
            NSLog(@"没有找到对应的字符串");
        } else {
           
            NSLog(@"location = %lu length = %lu",range.location,range.length);
        }
 
在这里我们可以看到输出下标要用到结构体中结构体变量访问结构体成员的比较麻烦,OC提供了一个方法NSStringFromRange将NSRange类型的结构体变量转变为字符串对象
            NSLog(@"%@",NSStringFromRange(range));
 
6,获取子字符串
NSString *str = [[NSString  alloc]initWithFormat:@"http://www.baidu.com"];
 
        1)获取给定下标之后的子字串,包含指定下标对应的字符substringFromIndex
 
        NSString *str1 = [str substringFromIndex:5];
        NSLog(@"str1 = %@",str1);
       
        2)获取从开始位置到给定下标之前的子字符串,但是不包含指定下标对应的字符   substringToIndex 
        str1 = [str substringToIndex:7];
        NSLog(@"str1 = %@",str1);
        3)获取从给定下标范围内的子字符串,即按照所给出的位置,长度,任意地从字符串中截取子串  substringWithRange:
如: 获取www
        str1 = [str substringWithRange:NSMakeRange(0, 3)];
        NSLog(@"str1 = %@",str1);
这里NSMakeRange(0, 3)快速给定结构体变量ange里的下标成员和长     度成员
 
7,拼接字符串
        NSString *str = [NSStringstringWithFormat:@"Lanou"];
       
        1)lanou后拼接henan  stringByAppendingString:
        NSString *newStr = [str stringByAppendingString:@"henan"];
        NSLog(@"newStr = %@",newStr);
       
        2) lanou后拼接henan9ban  stringByAppendingFormat:
        stringByAppendingFormat:比stringByAppendingString:功能强大,因为前者可以使用格式串,
        newStr = [str stringByAppendingFormat:@"9ban%@",newStr];
        NSLog(@"newStr = %@",newStr);
       
8,替换字符串
        NSString *str = [NSStringstringWithFormat:@"lanou is a big big big company"];
        1),将big替换成small  stringByReplacingOccurrencesOfString:
        NSString *newStr = [str stringByReplacingOccurrencesOfString:@"big"withString:@"small"];
        NSLog(@"newStr = %@",newStr);
在这里会将所有的big都换成small
 
        2),只将第一个big替换成small  stringByReplacingCharactersInRange:
        newStr = [str stringByReplacingCharactersInRange:NSMakeRange(11, 3) withString:@"small"];
       NSLog(@"newStr = %@",newStr);
       
  9,字符串比较  compare
        NSComparisonResult result =[@"111"compare:@"111"];
        NSLog(@"result = %ld",result);
这里结果只有三种1,0,-1,第一:按照降序,即前者大于后者,结果为1,第二:两者相等,结果为0,第三:按照升序,前者小于后者,结果为-1,
10,字符串和数值类型转换 
    1),将字符串"123" 转换为整数123  intValue
 
       intValue方法从第一个字符开始读取数字,如果在遇到了除空格之外的字符时,将前面的空格忽略掉,继续往下找,读取数字,直到遇到非数字时结束
        int value =  [@"   a1 2a3abc"intValue];
        NSLog(@"%d",value);
        float value1 = [@"   12a3abc"floatValue];
        NSLog(@"%.2f",value1);
    2),将数字转为字符串对象
        NSString *str = [NSStringstringWithFormat:@"%f",5.2];
  11,字符串大小写转换
     1),将@"lan OU"全部转换为大写  uppercaseString
        NSString *upperStr = [@"lan OU iS a big coMpany"uppercaseString];
        NSLog(@"%@",upperStr);
       
       
     2),将@"lan OU"全部转换为小写   lowercaseString
        upperStr = [@"lan OU iS a big coMpany"lowercaseString];
        NSLog(@"%@",upperStr);
 
       
      3),将@"lan OU"每个单词的首字母大写   capitalizedString
        upperStr = [@"lan OU iS a big coMpany"capitalizedString];
        NSLog(@"%@",upperStr);
12,将C语言的字符串转换为OC里的字符串对象  initWithUTF8String:
例如:
        char password[20] = {};  //定义一个密码
        NSLog(@"请输入密码:");
        scanf("%s",password);
在这里先定义一个NSString类型的对象passWord用来接收从C语言的字符串password转换的OC对象
        NSString *passWord= [[NSStringalloc] initWithUTF8String:password];


 
 
二,NSMutableString常用用法
 
  对可变字符串的增删改方法,都是在原字符串的基础上进行修改的,所有修改之后的原字符串的内容发生了改变,所有无需返回值
由于字符串可改变,因此每一次操作后原字符串都改变为操作后的字符串
1,创建一个可改变的字符串对象    stringWithFormat
        NSMutableString *str1 = [NSMutableStringstringWithFormat:@"lanouhenan"];
 
        1)在字符串str1基础上拼接Frank
        [str1 appendFormat:@"%@",@"Frank"];
        NSLog(@"%@",str1);(输出结果为:lanouhenanFrank)
 
        2)在字符串str1基础上拼接Frank
        [str1 appendFormat:@"%@",@"Frank"];
        NSLog(@"%@",str1);(输出结果为:lanouhenanFrankFrank)
       
        3)删除字符串,   deleteCharactersInRange
                     在原字符串的基础上删除henan
        [str1 deleteCharactersInRange:NSMakeRange(5, 5)];
        NSLog(@"%@",str1); (输出结果为:lanouFrankFrank)
 
        4) 插入字符串   insertString: atIndex:
                     在原字符串的基础上插入lanou
        [str1 insertString:@";lanou"atIndex:0];
        NSLog(@"%@",str1); (输出结果为:lanoulanouFrankFrank)
 
        5)在原字符串基础上将第一个Frank替换成Duke;
        [str1 replaceCharactersInRange:NSMakeRange(10, 5) withString:@"Duke"];
        NSLog(@"%@",str1); (输出结果为:lanoulanoDukekFrank)