在我的应用中,用户可以通过输入@
然后输入一些字母来搜索其他用户,这时将显示一个弹出窗口,其中包含潜在的用户名。我被困在用户将从弹出窗口中选择用户名的地步,应该用所选用户名替换部分输入的文本。例如,如果我键入:
hi @jo
然后从表中选择john,则它应如下图所示
hi @john
但是这没有发生。我发现一种叫做stringByPaddingToLength
,但仅适用于替换文本的一个字符。如果我用两个字符搜索,它将给出错误的输出。我的代码如下:
-(void)storeData:(NSString *)strName
{
NSString *strText = textView.text;//the String which is enter in textview
NSRange startRange = [strText rangeOfString:@"@" options:NSBackwardsSearch];//find the range of '@' from currently pointed at backward
strText = [strText stringByPaddingToLength:(strName.length + strText.length - 1) withString:strName startingAtIndex:(startRange.location+startRange.length)];//the string after append the string
}
如果输入@ ch,然后选择“ Chandru”,则会显示以下输出:
2015-05-05 19:55:02.789 [3733:131086] StrName :: @ chhandru
如果我只输入@ c,然后选择“ Chandru”,则会显示以下(正确的)输出。
2015-05-05 19:55:58.371 [3733:131086] StrName :: @ chandru
无论已经输入多少个字符,如何显示正确的用户名?
您可以为此在NSMutableString上使用replaceOccurrencesOfString:withString:options:range:方法。
[strText replaceOccurrencesOfString:@"@jo" withString:@"@john" options: CaseInsensitiveSearch range:NSMakeRange(0, strText.length)] ;