我正在尝试查找单词列表,如果匹配我正在替换。如果匹配的词出现不止一次,它就不会被替换。
我认为我需要使用while而不是if循环,但我无法使其工作。
我在挣扎请让我知道
NSString *mymessage = @"for you for your information at you your at fate";
NSMutableArray *full_text_list = [[NSMutableArray alloc]init];
[full_text_list addObject:@"for"];
[full_text_list addObject:@"for your information"];
[full_text_list addObject:@"you"];
[full_text_list addObject:@"at"];
NSMutableArray *short_text_list = [[NSMutableArray alloc]init];
[short_text_list addObject:@"4"];
[short_text_list addObject:@"fyi"];
[short_text_list addObject:@"u"];
[short_text_list addObject:@"@"];
for(int i=0;i<[full_text_list count];i++)
{
NSRange range = [mymessage rangeOfString:[full_text_list objectAtIndex:i]];
if(range.location != NSNotFound) {
NSLog(@"%@ found", [full_text_list objectAtIndex:i]);
mymessage = [mymessage stringByReplacingCharactersInRange:range withString:[short_text_list objectAtIndex:i]];
}
}
答案 0 :(得分:15)
你不必重新发明轮子;可可为你做到了......
代码:
NSString* message = @"for you for your information at you your at fate";
NSMutableArray* aList = [[NSMutableArray alloc] initWithObjects:@"for your information",@"for",@"you ",@"at ",nil];
NSMutableArray* bList = [[NSMutableArray alloc] initWithObjects:@"fyi",@"4",@"u ",@"@ ",nil];
for (int i=0; i<[aList count];i++)
{
message = [message stringByReplacingOccurrencesOfString:[aList objectAtIndex:i]
withString:[bList objectAtIndex:i]];
}
NSLog(@"%@",message);
提示: 我们将用bList [0]替换aList [0]的每一个出现,用bList [1]替换aList [1],依此类推......; - )
答案 1 :(得分:3)
查看NSString的stringByReplacingOccurrencesOfString:withString:method。
答案 2 :(得分:2)
你的字符串(myMessage)包含“for”字3次。当for循环第一次执行时,它将“for”替换为“4”,在第一次执行for循环后,你的字符串变得像“4你4你的命运在你的命运”。因为“为了你的信息”已成为“4你的信息”。它也取代了第三个“for”。
同样的方法是将“at”替换为“in4mation”一词并变得像“in4m @ ion”,最后你得到一个新的字符串,如“4 u 4 ur in4m @ ion @ u ur @ f @ e ”
我的英语不太好,我希望你明白我的意思。