我找不到并想到一种如何替换字符串出现的方法。我有
NSString *str = @"abc abc abc abc abc";
改变后我需要这样:
NSString *str = @"aaa1,aaa2,aaa1,aaa2,aaa1";
我猜使用stringByReplacingOccurrencesOfString不适合,所以我该怎么办?
感谢任何帮助,提前谢谢!
修改 对不起我没有提到,逻辑是用aaa1替换第一个找到的值,用aaa2找到第二个值,然后蚂蚁再次相同。 我想我可以这样表现出来:
if ((the number of founded string) %2 == 0)
replace with aaa1
else
replace with aaa2
EDIT2 更多示例字符串和输出
str = @"abc text abc more text abc";
outputStr = @"aaa1 text aaa2 more text aaa1";
str1 = @"abcabcabcabcabc";
str1output = @"aaa1aaa2aaa1aaa2aaa1";
答案 0 :(得分:2)
您可以将其用于:
NSArray *myArray = [str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
之后,您将获得一个NSArray,其中包含逗号分隔的所有字符串组件。例如,[myArray objectAtIndex: 0]
将等于abc
等。之后,您可以使用所需的对象替换数组中的对象。
for (int i=0; i < [myArray count]; i++) {
//Do the changes here. for example
if (i/2 == 0){
//add aa2
} else {
//add aa1
}
}
}
最后,您可以使用:
再次使数组成为NSStringNSString * result = [myArray componentsJoinedByString:@", "];
答案 1 :(得分:2)
查看NSScanner
,特别是scanUpToString:intoString:
答案 2 :(得分:1)
-(NSString *)parseString:(NSString *)string
{
NSLog (@"Original input: %@", string);
NSArray *stringParts = [string componentsSeparatedByString:@"abc"];
NSLog (@"found %d parts", stringParts.count);
for (NSString *part in stringParts)
{
NSLog (@" '%@'",part);
}
NSMutableString *mResult = [[NSMutableString alloc] init];
bool toggler = YES;
bool lastWasEmpty = NO;
for (NSString *part in stringParts)
{
if (!lastWasEmpty)
{
[mResult appendFormat:@"aaa%d",toggler?1:2];
toggler = !toggler;
}
[mResult appendString:part];
lastWasEmpty = !(part && (![part isEqualToString:@""]));
}
NSLog (@"Final result: %@", mResult);
return [NSString stringWithString:mResult];
}