您的位置:首页 > 移动开发 > Objective-C

Foundation 之 NSString和NSMutableString

2015-10-16 11:39 435 查看

NSString字符串

OC兼容C语言的字符串(OC兼容所有的C语法)

      char * p = "hello world";

      NSLog(@"%s", p);

OC特有字符串类NSString

四种创建OC字符串对象的方法

直接创建

      NSString * str = @"hello world";

      NSLog(@"%@", str);

用一个字符串创建另一个字符串

      NSString * str2 = [[NSString alloc] initWithString:str];  // str是字符串对象的地址

      或者 NSString * str2 = [[NSString alloc] initWithString:@"hello world"];  // @"hello world"是字符串对象地址

用一个C语言的字符串创建OC的字符串对象

      NSString * str3 = [[NSString alloc] initWithUTF8String:p];  // p是C语言字符串的首字符地址

      或者 NSString * str3 = [[NSString alloc] initWithUTF8String:"hello world"];

使用格式符创建OC的字符串对象

      NSString * str4 = [[NSString alloc] initWithFormat:@"hello %d %c", 5, 'A'];  // 打印出 hello 5 A

三种创建临时字符串的方法

将C的字符串转换成OC的字符串的对象

      NSString * str1 = [NSString stringWithUTF8String: "hello world"]; 

使用格式符创建临时字符串

      NSString * str2 = [NSString stringWithFormat: @"%d %@ %c", 1, @"hello", 'R']; 

使用一个字符串创建另一个临时字符串

      NSString * str3 = [NSString stringWithString: str]; 

      临时字符串自动释放,很难确认具体什么时候会释放,所以称为临时字符串

      注意:字符串不可变不可修改。

NSString的成员函数

作为一个对象,它可以发送消息,它可以被发送消息,并且对象自带很多消息,也就是很多的成员方法。

获取字符串的长度
      NSInteger sizeOfString = [@"hello world" length];
大小写转换
      NSString * originalString = @"This is An EXAMPLE";
      // "THIS IS AN EXAMPLE"
      NSString * uppercaseString = [originalString uppercaseString];
      // "this is an example"
      NSString * lowercaseString = [originalString lowercaseString];
      // "This Is An Example"
      NSString * capitalizedString = [originalString capitalizedString];
判断字符串是否相等
      BOOL ret = [str1 isEqualToString:str2];  // 判断字符串是否相等,并返回结果
         如果使用“==”判断,只是判断两个变量的指针是否相同,即检查这两个变量是否指向内存中的同一位置。
比较字符串

      NSComparisonResult ret = [str1 compare:str2];  

         // 比较函数,返回值是枚举(-1,0,1分别代表小于,等于,大于)

查找子字符串
      NSString * str = @"I am a so bad man.";
      NSString * subStr = @"so";

      NSRange range = [str rangeOfString:subStr];  

            // NSRange是一个C语言结构体,内有两个整数location和length,子串的位置下标和长度。

      if(range.location == NSNotFound) {
            // 其字符串没有找到
      } else {
            NSLog(@"%d, %d", range.location, range.length);
      }
      另外,也可以忽略大小写的查找子字符串
      NSRange range = [str rangeOfString:subStr options:NSCaseInsensitiveSearch];
截取字符串

      NSString * subStr = [str substringToIndex:6];  

         // 从str中提取从头至下标为6的字符串(不包括6),生成新字符串,返回字符串地址。

      NSString * subStr = [str substringFromIndex:6];  

         // 从str中提取从下标为6的字符串(包括6)到最后一个字符,生成新字符串,返回字符串地址。

      NSRange range = {3, 4};  

         // 第一个表示location,第二个表示length。从下标为3开始提取4个字符。

      NSString * subStr = [str substringWithRange:range];  

         // 从str中提取从下标为3开始提取4个字符,生成新字符串,返回字符串地址。

      直接使用range,

            [str substringWithRange:NSMakeRange(3, 4)]; 其中NSMakeRange的返回值就是一个NSRange。

NSMutableString可变字符串

可变字符串(子类)继承于字符串(父类),所以字符串类的方法都可以使用。

可变字符串的初始化及增删改方法

初始化

      NSMutableString * str = [[NSMutableString alloc] init];

设置字符串
      [str setString:@"hello"];  // 可以随时setString.
追加字符串
      [str appendString:@" world"];  // 追加字符串。
追加格式符
      [str appendFormat:@"%c", '!'];  // 追加各种格式类型。
插入字符串
      [str insertString:@"XXXX" atIndex:4];  // 插入XXXX到下标4后。
删除字符串一部分
      [str deleteCharactersInRange:NSMakeRange(3, 5)];  // 删除字符串中从下标3开始的后面的5个字符。
修改字符串一部分

      [str replaceCharactersInRange:NSMakeRange(3, 2) withString:@"TTTTTTTTTT"];  

         // 将字符串中下标从3开始的2个字符替换为TTTTTTTTTT。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息