Objective-C 字符串NSString

Foundation框架提供了很多基础类,这些类是我们构建应用程序的基石,字符串类NSString就是其中之一。NSString代表不变字符串,也就是说如果试图通过NSString的方法修改字符串,那么会返回字符串对象的副本。

NSString时不可变字符串,也就意味着对字符串做任何操作都不会改变原来的字符串,而是产生一个新的字符串对象。

首先看一个使用NSString实现跑马灯效果的代码:

NSString *str = @"从前有座山,山上有座庙,庙里有个老和尚和一个小和尚,老和尚在给小和尚讲故事: ";

        while (1) {

            str = [[str substringFromIndex:1] stringByAppendingString:[str substringToIndex:1]];

            printf("\n\n\n%s\n",[str UTF8String]);

            usleep(250000);

        }

以上代码使用了字符串的三个对象方法substringFromIndex: 、substringToIndex: stringByAppendingString: 。前两个方法表示截取str字符串的子字符串。第三个方法是将两个截取的子字符串拼接,然后打印拼接得到的新的字符串对象。然后循环操作便可以看到跑马灯的效果。

NSString *str1 = @"hello";

        char *str2 = "hello";

以上分别定义了一个字符串对象和一个字符数组。都是指向字符串 "hello",但是两个"hello"并不是同一个字符串常量。一个是OC语言的字符串,一个是C语言的字符串,自然不是同一个字符串。
NSString字符串常用的方法如下:
  1. 返回字符串长度:length
  2. 返回指定位置的单个字符:characterAtIndex:
  3. 比较两个字符串是否相同:isEqualToString:
  4. 正向查找子串的位置和范围:rangeOfString: 位置是子串第一个字符的位置,长度是字串的长度
  5. 逆向查找子串的位置和范围:rangeOfString:  options:NSBackwardSearch
  6. 从字符串中提取子串: substringFromIndex:index 从指定位置索引开始提取子字符串(包含index)     substringToIndex:index 从索引0开始取到index索引的子字符串(不包含index) substringWithRange: NSMakeRange( loc ,  len) 提取从索引loc开始长度为len的子字符串
  7. 将NSString转换成C字符串:cStringUsingEncoding:UTF8String   UTF8String支持多国语言编码
  8. 在字符串后追加字符串(拼接字符串):  stringByAppendingString:
  9. 在字符串后格式化追加字符串:[stringByAppendingFormat:@"a = %d",a];
  10. 字符串替换:stringByReplacingOccurrentOfString:   withString:
  11. 将整型数据转换为字符串型数据   int  a  =  6; [@(a) stringValue]; @(c)表示将int类型的a封装成NSNumber类型的数据 [@"" stringByAppendingFormat:@"%d",a];
  12. 读取本地文件中的字符串:   [ str1 stringWithContentsOfFile:@"/User/WF/Desktop/abc.txt" encoding:NSUTF8StringEncoding  error:nil ];
  13. 读取URL(统一资源定位符,唯一标识网络资源)网络资源中的字符串          str1 stringWithContentsOfURL:[ NSURL URLWithString:@"/User/WF/Desktop/abc.txt" ] encoding:NSUTF8StringEncoding  error:nil ];   

你可能感兴趣的:(Objective-C)