我在数组索引方面存在严重问题。我已经为此工作了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:@“@%@”,用户名] 参数。我该如何解决这个问题?
答案 0 :(得分:2)
如果我理解正确,您想要使用新字符串更改字符串中的子字符串。在这种情况下,为什么不直接使用NSString的stringByReplacingOccurrencesOfString方法:
NSString *stringToBeChanged = @"...";
NSString *stringToBeChangedWith = @"...";
NSString *commentTextNew = [commentText stringByReplacingOccurrencesOfString:stringToBeChanged withString:stringToBeChangedWith];