OC中Foundation框架之NSString、NSMutableString

创建方式

 1 1)直接赋值
 2     NSString *str =@"abc";
 3 2)创建对象
 4     NSString *str2 = [[NSString alloc]init];
 5                     str2 =@"abc"
 6 3)格式化创建
 7      NSString *str3=[NSString stringWithFromat :@"@",@"abc"];
 8                      
 9 4)从文件中获取
10     NSString strand =[NSString stringWithContentsOfFile:@"/Users/apple/Desktop/test.txt" usedEncoding:NSUTF8StringEncoding error:&err];
11 
12 
13 5)把字符串写入到文件
14     NSString *str7 = @"abc";
15                                             //路径                            //原子性
16                     str7 writeToFile :(NNString *) atomically :(BOOL)
17               //编码格式                         //错误信息
18  encoding:(NSStringEncoding) error:(NSError **);
19 
20 
21     NSERROR *err=nil;
22     BOOL flag=str7 writeToFile:@"/Users/apple/Desktop/test.txt" atomically:NO encoding : NSUTF8StringEncoding error:(&err];
23     if(flag){
24         NSLog(@"写入成功");
25     }
26 
27     if(err != nil){
28         NSLog(@"写入失败");
29     }else{
30         NSLog(@"写入成功");
31     }

使用NSURL读写字符串

 1 //1)使用NSURL 写入字符串数据到文件中
 2 
 3 NSURL *writeUrl = [NSURL URLWithString:@"file:///Users/apple/Desktop/1.txt"];
 4 
 5 NSString *str =@"itcast";
 6 
 7 BOOL isSucess = str writeToURL :writeUrl atomically:NO encoding:NSUTF8StringEncoding error:nil];
 8 
 9 if(isSucess){
10     NSLog(@"写入成功");
11 }
12 
13 
14 
15 //2)使用NSURL读取字符串到文件
16 
17 NSURL *readUrl =[NSURL URLWithString:@"file:////Users/apple/Desktop/1.txt"]
18 NSString *straighten = [NSString stringWithContentsOfURL:readUrl encoding :NSUTF8StringEncoding error:nil];
19 NSLog(@"%@",str2);

 NSString 字符串的比较

 1 1)比较两个字符串大小
 2     compare 方法:返回结果有三种:
 3             NSOrderedAscending         str < str2  -1     
 4             NSOrderedSame               str == str2      
 5             NSOrderedDescending       str >str2  1
 6 
 7 2)比较时指定条件
 8     如果要忽略大小写的话,可以在options 里面加入参数 NSCaseInsensitiveSearch
 9 
10      [str1 compare: str2 options:NSCaseInsensitiveSearch];
11 
12    条件有很多:
13         NSCaseInsensitiveSearch: 不区分大小写字符
14         NSLiteralSearch:            进行完全比较,区分大小写(默认)
15         NSNumericSearch:          比较字符串的字符个数,而不是字符值
16         ..... 等等 还有很多
17 
18 3)判断是否相同
19     isEqualToString
20 4) NSString前后缀检查
21     判断字符串是否以另一个字符串开头
22     -(BOOL) hasPrefix:(NSString *) aString 
23     以什么结尾
24     -(BOOL) hasSuffix :(NSString *) aString
25 5)字符串的查找
26      判断是否包含某个字符串,返回的为第一次出现的范围,NSRange包含两个成员 location :位置       length 长度, 如果查找不到,返回的Ranage的长度为0,位置为一个特别大得数
27     -(NSRange) rangeOfString:(NSString *) aString;
28     
29      反向判断是否包含(加入条件 NSBackwardsSearch]
30      -(NSRange) rangeOfString :(NSString *) options: NSBackwardsSearch
31 
32     
33         if(range.location != NSNotFound)

  6)字符串的截取
     从指定位置from开始(包括指定位置的字符)到末尾
    -(NSString *) substringFromIndex:(NSUInteger) from;
     从开头截取至to的位置,不包含to位置的字符
    -(NSString *) substringToIndex :(NSUInteger) to;
      按照所给出的NSRange从字符串截取子串
    -(NSString *)substringWithRange:(NSRange) range;
  7)字符串的替换
      用replacement替换target
    -(NSString *) stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
   8) 获取字符串的长度
    -(NSUInteger) length;
   9) 返回index位置对应的字符
    -(unichar)characterAtIndex:(NSUInteger)index;
   10)字符串和其他数据类型的转换
    -(double) doubleValue
    -(float) floatValue
    -(int) intValue
    OC的字符串和C的字符串的互转
    NSString *s4=@"helloworld";
    const char *ss =[s4 UTF8String];

    char ch[]="itcast";
    NSString *ocString =[NSString stringWithUTF8String :ch];
   11)去除空格
        去除所有的空格
       [str stringByReplacingOccurrencesOfString:@" " withString"@""]
        去除首尾的空格
       [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        去除头尾的小写字母
       lowercaseLetterCharacterSet
        去除头尾的大写字母
       uppercaseLetterCharacterSet
        去掉头尾的指定字符串
       characterSetWithCharactersInString:(NSString *)aString;

NSRange使用

1 NSRange是Foundation框架中比较常用的结构体,
2     type struct _NSRange{
3         NSUInteger location;
4         NSUInteger length;
5     }   
6     //NSUInteger 的定义
7     typedef unsigned int NSUInteger;
8     typedef unsigned long NSUInteger;
  通常用来表示一个范围,字符串里的字符长度,数组中元素的范围

创建:
  1)直接赋值
     NSRange range = {2,5};
  2)先定义后赋值
     NSRange range2;
     range2.location = 1;
     range2.length = 23;
  3)使用NSMakeRange 创建一个NSRange类型的变量
    NSRange range3 = NSMakeRange(45 ,3);

  

NSMutableString 的概念

1 NSMutableString类 继承NSString类,那么NSString提供的方法在NSMutableString中基本都可以使用,NSMutableString好比一个字符串链表,它可以任意的动态在字符串中添加字符串 ,删除字符串 ,指定位置插入字符串,使用它来操作字符串会更加灵活
2 --类似于java中的StringBuffer /StringBuilder

NSMutableString特有的方法

 1 具有NSString的所有方法
 2 
 3 创建一个空字符串
 4 NSMutableString *str2 = [NSMutableString string];
 5 给字符串追加内容
 6     [str2 appendString:@"welcome"];
 7 拼接一段格式化字符串到最后面
 8     -(void) appendFormat:(NSString *)format,...;
 9 从指定的range开始,删除字符
10     -(void) deleteCharactersInRange:(NSRange) range;
11 在loc这个位置插入aString
12     -(void)insertString:(NSString *) aString atIndex:(NSUInteger)loc;
13 使用aString替换range范围内的字符串,一般不是以string开头的一般都不会产生一个新的字符串,replaceOccurrencesOfString方法不需要传范围参数
14     -(void)replaceCharactersInRange:(NSRange)range withString :(NSString *)aString;
15 
16 替换需要传入range 通常配合rangeOfString 一起使用
17 NSRange rage =[str rangeOfString:@"itcast"];

注意事项:

 1 1)
 2     NSMutableString *str =@"xxx"; //这种方式创建的是NSString而不是NSMutableString
 3 
 4 2)NSMutableString的string属性:会将源对象的所有字符串都覆盖掉
 5     .string 属性可以修改字符串的内容
 6 
 7     例如:
 8             NSMutableString *str =[NSMutableString string];
 9             [str appendString:@"itcast"];
10             str.string=@"a";
11 3)位枚举,枚举值是2的0次方、1次方、2次方...
12     String 的附带条件 options 所传入的就是位枚举, 所以可以直接输入 0 2 4等
原文地址:https://www.cnblogs.com/developer-wang/p/4507360.html