首页 > 代码库 > NSString和NSMutableString 的常见用法

NSString和NSMutableString 的常见用法

NSString类是我们经常使用的类,这里对其用途及常用的一些方法做一些归类。

1>字符串的创建

NSString *str = @"字符串内容“;   //直接使用字符串常量的赋值方式

NSString *str = [NSString alloc ] init];   //创建一个空的字符串对象

NSString *str = [NSString stringWithFormat: @""];  //使用类方法的格式化创建方式来创建字符串

NSString *str = [NSString stringWithString:@""];     //浅拷贝一个已有字符串产生一个字符串

NSString *str = [NSString alloc ] initWithString: @""]; //使用实例方法创建一个字符串

NSString *str = [NSString alloc ] initWithFormat: @""]; //使用实例方法的格式化创建方式来创建字符串 

还有其他的创建方式,比如将C字符串转为OC字符串等等。

 

2>字符串的比较

- (NSComparisonResult)compare:(NSString *)string;  

//将两个字符串进行比较 返回一个枚举类型  这个枚举类型有3个值 分别为-1:代表升序 0:两者相等 1:代表降序

- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask; 

//以指定的方式对两个字符串进行比较

************************************************

带限制条件的比较方法 options的参数 是一个枚举类型  有以下几种常用的条件:

1>NSCaseInsenstiveSearch ( 1 ): 不区分大小写字符的比较

2>NSLiteralSearch ( 2 ):  区分大小写的比较

3>NSBackwardsSearch ( 4 ): 从尾端开始比较

4>NSAnchoredSearch ( 8 ): 正常的顺序比较方式

5>NSNumericSearch ( 64 ): 比较字符串的字符个数

************************************************

- (NSComparisonResult)compare:(NSString *)string options:(NSStringCompareOptions)mask range:(NSRange)compareRange;

//选取一个范围 range  在该范围内用带限制条件的比较方法 *注意该比较方法 是从str1的range取出字符串与整个str2进行比较

- (BOOL)isEqualToString:(NSString *)aString;  //简单的判断两个字符串是否相等 返回一个BOOL值

* - (NSComparisonResult)localizedCompare:(NSString *)string;

* - (NSComparisonResult)localizedCaseInsensitiveCompare:(NSString *)string;

//两个本地化规则的比较方法   暂时没有弄明白 注上*

 

3>字符串的修改

1)常用的大小写转换

- (NSString *)uppercaseString;  //将所有的字符串改为大写

- (NSString *)lowercaseString;   //将所有的字符串改为小写

- (NSString *)capitalizedString;  //将所有单词的首字符改为大写 

2) 取出子字符串

 - (NSString *)substringFromIndex:(NSUInteger)from;  //取出从Index标记位置到结尾的字符串 包含Index位置的字符

- (NSString *)substringToIndex:(NSUInteger)to;          //取出从开头到Index标记位置的字符串, 不包含Index位置的字符

- (NSString *)substringWithRange:(NSRange)range;     //取出range范围内的字符串 , 注意边界

3)字符串的拼接

- (NSString *)stringByAppendingString:(NSString *)aString;  //将一个字符串拼接到另一个字符串,并产生一个新的字符串

- (NSString *)stringByAppendingFormat:(NSString *)format;  //将一个格式化生成的字符串拼接到另一个字符串,产生一个新的字符串

4)字符串的替换

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement ;

//查找字符串中是否包含以下字符串,并将其替换为指定的字符串

- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement ;

//将指定范围内的字符串替换为指定的字符串

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange ;

//将指定范围内的查找是否包含以下字符串,并以options中的方式替换为指定的字符串

 

4> 字符串的查找

- (NSRange)rangeOfString:(NSString *)aString;   //查找某字符串在一个字符串中的位置,返回一个range

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask;

//以指定方式查找某字符串在一个字符串的位置,返回一个range

- (NSRange)rangeOfString:(NSString *)aString options:(NSStringCompareOptions)mask range:(NSRange)searchRange;

//在指定的范围里,以指定方式查找某字符串在一个字符串中的位置,返回一个range

- (BOOL)hasPrefix:(NSString *)aString;    //判断是否以某字符串开头

- (BOOL)hasSuffix:(NSString *)aString;   //判断是否以某字符串结尾

 

5> 字符串的读写与一些其他方法

 - (NSArray *)componentsSeparatedByString:(NSString *)separator;  

//将字符串以某个字符串进行分割,将分割后的字符串存入字符串数组中,返回数组

- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator ;

//将字符串以一个集内的字符进行分割,将分割后的字符串存入字符串数组中,返回数组

- (NSUInteger)length;    //返回字符串长度

- (unichar)characterAtIndex:(NSUInteger)index;   //返回Index标记的字符

- (double)doubleValue;    //将一个纯数字的字符串转为double型

- (float)floatValue;          //将一个纯数字的字符串转为float型

- (int)intValue;               //将一个纯数字的字符串转为int型

- (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

//将字符串写入url中,如果成功返回YES

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

//将字符串写入指定路径,如果成功返回YES

+ (instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

//将指定url的内容 写入字符串中,

+ (instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;

//将指定路径的文件内容写入字符串中

 

NSMutableString作为NSString的子类,继承了大多方法,也有一些自己独有的方法

1> NSMutableString 的创建

- (id)initWithCapacity:(NSUInteger)capacity;    //实例方法,初始化长度为capacity的可变字符串 

+ (id)stringWithCapacity:(NSUInteger)capacity;  //类方法,初始化长度为capacity的可变字符串

2> NSMutableString 的修改

- (void)setString:(NSString *)aString;   //将一个已存在的可变字符串的内容改为另一串字符串 

- (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;    //在Index标记的位置插入一个字符串

- (void)deleteCharactersInRange:(NSRange)range;    //删除指定范围的字符串

- (void)appendString:(NSString *)aString;          //将字符串拼接到已有的字符串上

- (void)appendFormat:(NSString *)format;     //将格式化的字符串拼接到已有的字符串上

 

NSString和NSMutableString的修改方法可以看出明显的区别,NSString的修改方法会返回一个NSString的对象 ,这是因为必须使用一个新的字符串对象来保存修改后的字符串。 而NSMutableString的修改方法返回一个空值,这是因为它是原有的可变字符串上做的修改,修改后的字符串仍是原有的字符串的地址。