2013-11-14 62 views
-3

我無法找到並想到如何替換字符串出現的方法。 E.g我有用不同的值替換字符串的出現

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"; 
+4

這是什麼邏輯在這裏,你是如何決定輸出字符串應該是什麼? – wattson12

+1

這是用於某種算命應用程序嗎? –

+0

@ wattson12對不起,請參閱我的編輯 – Lukas

回答

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]; 
} 
+0

非常感謝您的幫助! – Lukas

+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 
     } 
    } 
} 

最後,你可以使陣列的NSString再次使用:

NSString * result = [myArray componentsJoinedByString:@", "]; 
+0

我的字符串可以是任何東西,我只是做了一個例子,我想用一些字符串替換第一個發現的值,第二個創建的值與另一個,然後再次重複此過程,請參閱我的編輯。謝謝 – Lukas

+0

你的意思是沒有標準模式?那麼你將如何定義值? –

+0

該字符串可以沒有逗號,也許我提供了一個不好的例子,對不起。請參閱我的問題的評論。 – Lukas

相關問題