0

使用时stringByReplacingOccurrencesOfString,它似乎替换了单词中的单词。例如,

The house was held together by...

用“A”替换出现的“the”将导致

A house was held togeAr by...

我怎样才能避免这种情况?我知道我可以在被替换的单词的任一侧添加空格以确保它不是更长单词的一部分,但这并不适用于所有情况,特别是在被替换的单词是句子中的第一个或最后一个单词的情况下(也就是说,当两边都没有空白时)。

4

2 回答 2

4

您应该使用NSRegularExpressionwith 表示单词边界的\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 回答