天天看点

Foundation中的可变字符串对象

区别于NSString,可变字符串NSMutableString对象的所引用的字符串内容可以被修改,这种修改包括:删除、插入、替换等。

而NSString是NSMutableString的子类,本身并不能修改指向的字符串,只能改变指向的字符串。

Foundation提供了对于可变字符串对象的修改,现在看几个小需求。

1.在str字符串的第2个字符串的位置插入字符串replace

NSMutableString *str = [NSSMutableString stringWithString:@"today is June 22"];
NSString *replace = @"fighting";
[str insertString:replace atIndex:2];
           

2.追加tail到str

NSMutableString *tail = @"tomorrow is June 23";
[str appendString:tail];
           

3.使用NSRange删除指定范围的字符串

NSRange range = [str rangeOfString:@"June"];
if (range.location != NSNotFound) {
  [str deletedCharactersInRange:range];
  //[str deleteCharactersInRange:NSMakeRange(8,4);
  NSLog(@"str = %@", str];
}
           

4.对字符串中的子串进行替换操作

// 把England替换成Argentina
NSString *replace = @"Argentina";
NSMutableString *source = @"The winner of FIFA CUP is England";
NSRange range = [source rangeOfString:@"England"];
if (range.location != NSNotFound) {
  [source replaceCharactersInRange:rang 
                              withString:replace];
  NSLog(@"%@", source);
}
           

5.最后是把字符串中的字符全部替换

// 将XTULGQLEWOWXXLXXTUWP中的X全部替换成O
NSMutableString *beConfident = @"XTULGQLEWOWXXLXXTUWP"
NSString *replace = @"OV";
NSRange range = [beConfident rangeOfString:X];
while(range.location != NSNotFound) {
  [beConfident replaceCharactersInRange:range withString:replace];
  range = [beConfident rangeOfString:replace];
}