我试图弄清楚这几个小时,在互联网上找不到任何类似的东西,所以希望你能帮帮我..
我正在尝试替换NSString中的单个字符,应该很简单吧? 这就是我所做的:
NSError *error;
NSString *str1 = @"E bis the EVE E on E is the the hte ee e.";
NSString *str2 = @"E abis the EVE E on E is the the hte ee e.";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\bE\\b"
options:NSRegularExpressionCaseInsensitive
error:&error];
int numberOfMatches1 = [regex numberOfMatchesInString:str1
options:0
range:NSMakeRange(0, [str1 length])];
int numberOfMatches2 = [regex numberOfMatchesInString:str2
options:0
range:NSMakeRange(0, [str2 length])];
NSLog(@"%d, %d",numberOfMatches1,numberOfMatches2);
NSString *modifiedStr1 = [regex stringByReplacingMatchesInString:str1
options:0
range:NSMakeRange(0, [str1 length])
withTemplate:@"O"];
NSString *modifiedStr2 = [regex stringByReplacingMatchesInString:str2
options:0
range:NSMakeRange(0, [str2 length])
withTemplate:@"O"];
NSLog(modifiedStr1);
NSLog(modifiedStr2);
这个想法是用O替换所有单个E(也在字符串的开头和结尾),并保留所有其他的。 在第一个字符串中,这按预期工作,但是当我向字符串添加一些东西时,在这种情况下,在第二个位置上的'a'我得到误报。 输出是:
4,5(str1和str2的匹配数nr)
O O O上的EVE O就是O.< --- correct
O abis O上的EVE O就是那个O.< --- false,它取代了''中的'e'
我做错了什么?
答案 0 :(得分:0)
除了编译器警告之外,您的两个int
应该是NSUInteger
,而格式字符串中需要%lu
,最后两个NSLog
调用应该有一个格式字符串 - 你在显示的代码中没有任何错误,它按预期工作(在10.8.5上使用Xcode 5.0.2测试)。
所以你的问题在其他地方。逐步调试调试器中的代码,记录所有指针值等,希望你能找到它。