の範囲とは何NSString
ですか? 次の関数を使用する場合の例-
replaceOccurrencesOfString:withString:options:range:
パラメータには何を渡す必要がありますか?
シナリオ - 文字列の前半で「aaa」を見つけて「bbb」に置き換えます
の範囲とは何NSString
ですか? 次の関数を使用する場合の例-
replaceOccurrencesOfString:withString:options:range:
パラメータには何を渡す必要がありますか?
シナリオ - 文字列の前半で「aaa」を見つけて「bbb」に置き換えます
範囲パラメータは、と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を検索し、1234文字列の後にABCDの出現を置き換えるためにNSRangeを作成しています。