0

好的,假设我有这个字符串:

R RATS ARE FAR

我想用 X 替换独立的 R 以便:

X RATS ARE FAR

我试过 stringByReplacingOccurrencesOfString 但这将所有 R 替换为 X。实现它的一种方法是检查字母前后是否有空格,这意味着它是独立的,然后去杀戮,但这种方法似乎很蹩脚。字符串也是动态的,R 的位置也是动态的。

4

2 回答 2

2

我在这里假设单词可以被几乎任何非字母数字字符包围,对吗?(否则你只需用“X”替换@“R”,加上前导/尾随出现的特殊情况)


一种方法是使用RegexKitLite

[string replaceOccurrencesOfRegex:@"\bR\b" withString:@"X"];

(\b表示PCRE 风格正则表达式中的word * b *oundaries)


然后是CFStringTokenizer(搜索链接文档kCFStringTokenizerUnitWordBoundary),这可能会有所帮助。

于 2011-04-12T23:22:28.363 回答
1

我会这样做:

NSString *statement = @"R RATS ARE FAR";
statement = [statement stringByReplacingOccurrencesOfString:@" R " withString:@" X "];
// now check if the string starts with R + space
if ([statement hasPrefix:@"R "])
    statement = [statement stringByReplacingOccurrencesOfString:@"R " withString:@"X " options:0 range:NSMakeRange(0,2)];
// now check the end
if ([statement hasSuffix:@" R"])
   statement = [statement stringByReplacingOccurrencesOfString:@" R" withString:@" X" options:0 range:NSMakeRange([statement length] - 2, 2)];

如果你打算在这个字符串中进行大量替换,你应该使用NSMutableString.

于 2011-04-12T23:38:36.480 回答