2014-01-24 3 views
0

У меня есть серьезная проблема с индексированием в массиве. Я работаю над этим в течение 2 дней и пока не могу найти ответ.Заменить строку между двумя строками

Я хочу это сделать, поиск определенного символа в массиве, а затем заменить его на другую строку. Я использую метод replaceObjectAtIndex, но мой код не работает.

Это мой код;

NSString *commentText = commentTextView.text; 
    NSUInteger textLength = [commentText length]; 
    NSString *atSign = @"@"; 
    NSMutableArray *commentArray = [[NSMutableArray alloc] init]; 
    [commentArray addObject:commentText]; 

    for (int arrayCounter=1; arrayCounter<=textLength; arrayCounter++) 
    { 
     NSRange isRange = [commentText rangeOfString:atSign options:NSCaseInsensitiveSearch]; 
     if(isRange.location != NSNotFound) 
     { 
      commentText = [commentText stringByReplacingOccurrencesOfString:commentText withString:atSign]; 
      [_mentionsearch filtrele:_mentionText]; 
      id<textSearchProtocol> delegate; 
      [delegate closeList:[[self.searchResult valueForKey:@"user_name"] objectAtIndex:indexPath.row]]; 
     } 
    } 

Хорошо, теперь я могу найти знак «@» в тексте, и я могу его сопоставить. Но это источник проблемы, я не могу заменить любую строку знаком «@». Вот последняя часть кода;

-(void)closeList 
    { 
     NSArray *arrayWithSign = [commentTextView.text componentsSeparatedByString:@" "]; 
     NSMutableArray *arrayCopy = [arrayWithSign mutableCopy]; 
     [arrayCopy replaceObjectAtIndex:isRange.location withObject:[NSString stringWithFormat:@"@%@",username]]; 
    } 

При регистрации им isRange.location значение, она возвращает правильно. Но когда я пытаюсь запустить, мое приложение рушится. Таким образом, я не могу заменить [NSString stringWithFormat: @ "@% @", username] параметр. Как я могу решить эту проблему?

+1

Как он падает? Вы должны включить аварийный журнал. – jrturton

+0

Почему вы пытаетесь использовать диапазон, взятый из строкового поиска, как индекс в массив? – Wain

+0

Нет ни одного лога. Единственное, что у меня есть, (lldb) 0x6ae8952: jae 0x6ae8962; __pthread_kill + 26. –

ответ

2

Если я правильно понял, вы хотите изменить подстроку в строке с помощью новой строки. В этом случае, почему бы вам не использовать напрямую метод stringByReplacingOccurrencesOfString для NSString:

NSString *stringToBeChanged = @"..."; 
NSString *stringToBeChangedWith = @"..."; 
NSString *commentTextNew = [commentText stringByReplacingOccurrencesOfString:stringToBeChanged withString:stringToBeChangedWith]; 
+0

Я сделал большую ошибку в результатах массива. Это решение thx :) –

+1

Я хочу изменить строку между «<>» до < new tring> моя строка - это динамическая строка, то как я могу определить строку –

Смежные вопросы