我正在使用React Native (聊天),在这个应用程序中我有一个表情符号选择器,但当用户按下虚拟退格键表情符号时,只删除他们的最后一个unicode字节。
如何检测最后的'chat‘(一组unicodes)是否是独立的emoji unicode?
拆分它的代码:
inputValue.substring(0, inputValue.length - 1)
我还尝试使用Array.from(),然后使用slice(0,-1),当我在控制台记录它时,所有情况的正确解决方案都会出现。但!当我将相同的变量设置为TextInput时,出现: 321331231221。
下面是一些例子:
"Hello".length
7
"Hello".slice(0,-1)
'Hello�'
Array.from("Hello")
[ 'H', 'e', 'l', 'l', 'o', '' ]
Array.from("Hello").slice(0,-1)
[ 'H', 'e', 'l', 'l', 'o' ]
Array.from("Hello").slice(0,-1).join('')
'Hello'
但是如果我在React Native TextInput组件中设置最后一个解决方案,我会看到类似这样的结果: 312412412411 (可能都是十六进制的)。如果该值没有表情符号,我也会看到相同的结果。
当我用表情符号选择器设置表情符号时,像${inputValue}${newEmoji}
这样的东西都能正常工作。
我不知道该怎么想:/
发布于 2018-12-19 17:19:15
尝试使用slice:
inputValue.slice(0, -1);
更新:
这个包可能会对您有所帮助:runes
您的需求示例:
const runes = require('runes')
function backspace(text){
return runes(text).slice(0, -1);
}
//the call :
backspace('Made with ♥') // Made with
https://stackoverflow.com/questions/53847969
复制相似问题