Kemal Can Kaynak
Kemal Can Kaynak

Reputation: 1658

Replace String Between Two Strings

I have a serious problem about indexing in array. I've been working on this for 2 days and couldn't find answer yet.

I want to do that, search specific character in array then replace it with other string. I'm using replaceObjectAtIndex method but my code is doesn't work.

Here is my code;

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

Ok, now i can find "@" sign in the text and i can match it. But this is the source of problem that, i can not replace any string with "@" sign. Here is the last part of code;

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

When im logging isRange.location value, it returns correct. But when im try to run, my application is crashing. So, i can not replacing [NSString stringWithFormat:@"@%@",username] parameter. How can i solve this problem?

Upvotes: 0

Views: 665

Answers (1)

tanz
tanz

Reputation: 2547

If I understand correctly you want to change a substring in a string with a new string. In this case, why don't you use directly the stringByReplacingOccurrencesOfString method of NSString:

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

Upvotes: 2

Related Questions