0

を使用stringByReplacingOccurrencesOfStringすると、単語内の単語が置き換えられるようです。たとえば、

The house was held together by...

'the'の出現箇所を'A'に置き換えると、次のようになります。

A house was held togeAr by...

どうすればこれを回避できますか?置き換えられる単語の両側に空白を追加して、長い単語の一部にならないようにすることができますが、これはすべての場合に機能するわけではありません。特に、置き換えられる単語が文の最初または最後の単語である場合はそうです(つまり、空白が両側にない場合)。

4

2 に答える 2

4

単語の境界を示すNSRegularExpressionパターン\bthe\bでを使用する必要があります。\b

NSString *input = @"The house was held together by...";
NSString *string = @"the";
NSString *replacement = @"A";

NSString *pattern = [NSString stringWithFormat:@"\\b%@\\b", string];
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:nil];
NSString *result = [regex stringByReplacingMatchesInString:input options:0 range:NSMakeRange(0, input.length) withTemplate:replacement];

NSLog(@"%@", result);
// A house was held together by...
于 2012-05-24T13:50:24.587 に答える
1

より複雑な置換操作には、を使用できますNSRegularExpression。のようなものを検索して(^| )the($| )、一致するものを置き換えることができます。

于 2012-05-24T13:39:41.830 に答える