向后使用自定义字符串

时间:2014-04-24 09:30:25

标签: ios objective-c nsstring

我使用字符串数组来表示这样的表情符号:

NSArray *emoticons = @[@"[smile]",@"[cry]",@"[happy]" ...]

然后在UITextView中显示如下字符串:

I'm so happy now [happy] now [smile]

当我点击后退删除按钮时,如果最后一个单词是表情符号,我希望删除整个表情符号字符串,不是最后一个字符。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

试试这个,

NSString *string = self.textView.text;
__block NSString *deleteWord = nil;
__block NSRange rangeOfWord;

[string enumerateSubstringsInRange:NSMakeRange(0, self.textView.selectedRange.location + self.textView.selectedRange.length) options:NSStringEnumerationByWords | NSStringEnumerationReverse usingBlock:^(NSString *substring, NSRange subrange, NSRange enclosingRange, BOOL *stop) {
    deleteWord = substring;
    rangeOfWord = enclosingRange;
    *stop = YES;
}];


if ([emoticons containsObject:deleteWord]) {
    string = [string stringByReplacingCharactersInRange:rangeOfWord withString:@""];
    self.textView.text = string;
    self.textView.selectedRange = NSMakeRange(rangeOfWord.location, 0);
}

答案 1 :(得分:0)

使用UITextViewDelegate方法textView:shouldChangeTextInRange:replacementText:检查即将删除的内容并移除整个[emoticon]字词,您可能会达到相应的效果。

答案 2 :(得分:0)

我告诉你我用过的想法。

因为你没有提到你用作表情符号的内容 但对于删除逻辑,我想你会从我的代码中得到一些想法。

if ([string isEqualToString:@""]) {

    NSString *lastChar = [txthiddenTextField.text substringFromIndex: [txthiddenTextField.text length] - 1];
    NSLog(@"Last char:%@",lastChar);
    txthiddenTextField.text = [txthiddenTextField.text substringToIndex:[txthiddenTextField.text length] - 1];

    NSString *strPlaceHolder;
    strPlaceHolder = txthiddenTextField.text;

    if([lastChar isEqualToString:@"]"])
    {
        int j = 1;
        for (int i = [txthiddenTextField.text length]-1; i >=0; --i)
        {



            NSString *lastChar = [txthiddenTextField.text substringFromIndex: [txthiddenTextField.text length] - 1];
            if([lastChar isEqualToString:@"["])
            {
                NSLog(@"%d",j);
                txthiddenTextField.text = [txthiddenTextField.text substringToIndex:[txthiddenTextField.text length] - 1];
                // NSLog(@"Processing character %@",strPlaceHolder);
                break;
            }
            txthiddenTextField.text = [txthiddenTextField.text substringToIndex:[txthiddenTextField.text length] - 1];
            j = j+1;


        }
    }

    NSLog(@"My text fild value :%@",txthiddenTextField.text);

    return YES;
}

所以,从这里你必须检查结束括号是否来了。
如果关闭括号将到达开启括号,您必须删除。

然后整个表情符号将被删除。

希望这会有所帮助......