什么是范围NSString
?例如,当我们使用以下功能时-
replaceOccurrencesOfString:withString:options:range:
应该传入什么参数?
场景 - 在字符串的前半部分找到“aaa”并将其替换为“bbb”
什么是范围NSString
?例如,当我们使用以下功能时-
replaceOccurrencesOfString:withString:options:range:
应该传入什么参数?
场景 - 在字符串的前半部分找到“aaa”并将其替换为“bbb”
range 参数是NSRange
由location
和组成的类型length
。顾名思义,它指定了方法中应该使用的字符串中的字符范围。
警告:这个意义上的“字符”实际上是一个 Unicode UTF-16“代码片段”——这不是人们通常期望的字符。因此,将字符串分成两半可能会在代理对中间分裂,这会使子字符串无效。要在适当的位置拆分,请使用rangeOfComposedCharacterSequencesForRange:
.
这是一个适当的例子:
NSMutableString *myString = [@"有人给我们树立了炸弹" mutableCopy];
NSRange range = {0, [myString length] / 2};
range = [myString rangeOfComposedCharacterSequencesForRange:range];
[myString replaceOccurrencesOfString:@"炸弹"
withString:@""
options:0
range:range];
NSString *foo = @"ABCD 1234 ABCD TEST";
NSLog(@"Actual string: %@",foo);
int location = [foo rangeOfString:@"1234"].location; //location of 1234
NSRange range = NSMakeRange(location, (foo.length)-location); //create range
foo = [foo stringByReplacingOccurrencesOfString:@"ABCD" withString:@"foo" options:NSLiteralSearch range:range]; //replacing ABCD with foo
NSLog(@"Updated string: %@",foo);
实际字符串:ABCD 1234 ABCD TEST
更新字符串:ABCD 1234 foo TEST
在这里,我在 foo 中搜索 1234,然后使用 NSRange 替换 1234 string 之后出现的 ABCD。