相比于C语言来讲,一般面向对象的语言都有一种类型来专门的处理字符串类型,如C++的string,JAVA的String..  Objectiver-C 自然也有种类型来专门处理字符串,叫做NSString。

  

 

 

  Objective-C中的字符串也分为两种:NSString(不可变字符串),NSMutableString(可变字符串),NSMutableString类是NSString的一个子类。

  注:Objective-C中的字符串 都需要用@"内容",前边必须要用一个@

  (1)NSString--------不可变字符串

    

  //初始化 

    NSString@"123"; //直接赋值

 

           NSStringNSStringalloc] initWithFormat:str1];//根据字符串str1来创建字符串

      

/*

这种方法也是根据字符串str1来创建字符串

但是与上方的定方法不同的是:用方法创建的字符串被称为临时字符串

因为用这种方法创建的字符串会随时释放,在以后的iOS中,很难控制

       */   

NSStringNSStringstringWithFormat:str1];//这表示字符串str3是根据str1建立的,相当于把str1的值赋给str3

      

将C语言的字符数组或者字符指针转换成NSString

/*

将C语言中的字符数组char[]或者字符指针char *转变成 NSString

方法是: [[NSString alloc] initWithUTF8String:(const char *)]

      */  

NSStringNSStringalloc] initWithUTF8String:p];//将字符指针p转换成NSString

    

字符串比较是否相等

BOOLisEqualToString:str1];//返回YES(1)   NO(0)

 

字符串比较大小

    /*

 方法是:str1 compare:(NSString *),返回类型是 NSComparisonResult

需要用NSComparisonResult来接收结果,该类型是一个枚举

枚举的值是:

相等

小于

大于

       */

NSComparisonResult@"123"compare:@"123"]; //这是比较 字符串@“123” 和 字符串@“123”的大小

    

字符串中查找子串

    /*

方法:str5 rangeOfString:(NSString *)

该方法返回类型是,该类型是一个结构体

结构体的元素:

表示位置

表示长度

       */

    //下例表示在str5中查找子串@“my”,并且返回一个NSRange类型,从而获取位置以及长度

NSString@"This is my Objective-C Project";

NSRangerangeOfString:@"my"];

intint)range.location;    //location是接受@”my“在str5中的位置(实际是下标)    

intint)range.length;    //length是长度

  

  //在字符串中提取字符串

/*

[ str6 substringToIndex:(NSUInteger)]

从中提取从第0位到第6位的字符串,生成新的字符串,返回地址

注:此处的范围是[0,6)(此范围是下标范围)

    str6 = @"0123456789";

    结果:str7 = @"012345"

       */

NSStringsubstringToIndex:6];

    

 

/*

[str6 substringFromIndex:(NSUInteger)]

从中提取从弟6位到末尾的字符串,生成新的字符串,返回地址

注:此处的范围是[6,n];(此范围是下标范围)

     str6 = @"0123456789";

     结果是: str9 = @"6789";

       */

NSStringsubstringFromIndex:6];

    

 

/*

[str6 substringWithRange:(NSRange)]

这个方法的含义是:截取从第NSRange.location个元素开始,截取长度是NSRange.length

返回地址

    下例表示:从str6中 从第4个开始截取长度为5个的字符串(依旧是下标来计数)

    范围:[4,9)

    str6 = @"0123456789"

       str9 = @"45678"

       */

NSStringsubstringWithRange:NSMakeRange(4, 5)];

 

 

  (2)NSMutableString-------可变字符串(因为 可变字符串  是继承于不可变字符串 所有上述方法 可变字符串依旧能用,但初始化有一种是不能定义的,下面会说)

  

//初始化:  

NSMutableString@"123456789";//这种代码是错误的,不能这么定义!!      

NSMutableStringNSMutableStringalloc] init];   

setString:@"abc"];//给字符串str1设置值

 

 

//字符串追加 

/*

方法:str1 appendString:(NSString *)]

在str1后面追加字符串

       */

appendString:@"123"];

    

//格式化追加

appendFormat:@"%c",'Z'];

 

 

//插入字符串

  /*

[str1 insertString:(NSString *) atIndex:(NSUInteger)]

  意思是将 字符串NSString 插入到 字符串str1的第 NSUInteger 个位置(同样是相对于下标)

  str1 = @"0123456789";

  执行后:str1 = @"012345SSSSSS6789";

  */

insertString:@"SSSSSS"atIndex:6];  //将字符串 @"SSSSSS" 插入到 字符串str1的第6个位置

 

  //这个方法与上面一样,只不过在 insertString: 之后用的是一个通过格式化的新创建的NSString

insertString:[NSStringstringWithFormat:@"%d",-36] atIndex:6];

 

  //删除字符串

    /*

[str1 deleteCharactersInRange:(NSRange)]

    NSRange是一个结构体,内有两个成员变量

    location 代表开始的位置

    length 代表长度

    范围(location ,location + length](下标)

      str1 = @"0123456789"; 

结果:str1 = @"01289";

     */

deleteCharactersInRange:NSMakeRange(3, 5)];  //将 str1 中的第4个元素开始删除,删除到第9(4+5)个(包括第9个)

  

 

 //修改字符串(替换字符串)

  /*

[str1 replaceCharactersInRange:(NSRange) withString:(NSString *)]

  NSRange是一个结构体,解释看删除字符串的解释

  将 NSString 的字符串 替换 str1中的NSRange 的字符串

  str1 = @"0123456789";

  结果:str1 = @"012XXXXX56789"; 

  */  

replaceCharactersInRange:NSMakeRange(3, 2) withString:@"XXXXX"];//将 str1 的第3个(实际位第4个,因为是下标)开始,用字符串@"XXXXX"替换 2个长度的字符串

 

  //字符串与数据的应用

  例如:

  NSString *str = @"This is my OBjective-C Project!";

  NSArray *arr = [str componentsSeparatedByString:@" "];//意思是用空格来分割字符串,并将值存入数组

  NSString *str1 =[arr componentsJoinedByString:@" "];//意思是将数组用" "连接起来