-4

什么是范围NSString?例如,当我们使用以下功能时-

replaceOccurrencesOfString:withString:options:range:

应该传入什么参数?

场景 - 在字符串的前半部分找到“aaa”并将其替换为“bbb”

4

2 回答 2

3

range 参数是NSRangelocation和组成的类型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];
于 2013-02-28T07:02:42.547 回答
0
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

于 2013-02-28T07:19:31.960 回答