首页 > 代码库 > 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的修改方法返回一个空值,这是因为它是原有的可变字符串上做的修改,修改后的字符串仍是原有的字符串的地址。