需求简单描述一下,如何实现在输入框输入 @朋友 不变色,但是通过点击下面的列表会变色呢?
首先我们肯定是要通过正则匹配去匹配 @朋友 这样的格式,但是在匹配的时候我们怎么知道这个文字是手动输入的还是点击列表输入的呢,很简单我们会想到给列表输入的加一个标识,能够区分你是手动输入还是点击列表输入的。
接着在想加一个什么样的标识呢?
- 这个标识有第一个要求就是用户不能通过键盘输入这个标识,用户可以通过操作输入,那么匹配又可能把用户手动输入的情况匹配了(必须的)
- 这里开发的iOS程序,对 UITextView 最好能不影响显示。(非必须)
我的做法是通过控制字符 '\a',在点击列表输入的时候加上一个 ‘\a’控制字符来处理。这样用户永远无法输入这个控制字符,就可以区分开了。匹配的正则表达式可以这样写
[@][^@]+[\a]
**总结一下控制字符的特点:
- ‘\a’ 这种是一个字符,字符串的长度为1
- 用户无法通过操作输入 4.控制符虽然不能通过键盘输入,但是可以通过手机的删除键删除**
提问:
- 如果我在输入在输入框 \a 时候为什么不能作为转义字符呢? 因为你输入 \a,毕竟先输入\ ,再输入 a 来实现的, 这是系统就分开存错他的编码值。即使你是复制也是一样的,系统也会自动一个一个处理,而不会把他当做转义字符来处理。