使用stringByReplacingOccurrencesOfString
时,它似乎取代了单词中的单词。例如,
The house was held together by...
用'A'替换'the'的出现将导致
A house was held togeAr by...
我该如何避免这种情况?我知道我可以在被替换的单词的两边添加空格以确保它不是更长的单词的一部分,但是这并不适用于所有情况,特别是在被替换的单词是句子中的第一个或最后一个单词的情况下(也就是说,当两侧没有空白区域时)。
答案 0 :(得分: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...
答案 1 :(得分:1)
对于更复杂的替换操作,您可以使用NSRegularExpression
。您可以搜索(^| )the($| )
之类的内容并替换匹配。