【问题标题】:Remove last char string when string contains emojis当字符串包含表情符号时删除最后一个字符字符串
【发布时间】:2018-12-19 09:16:44
【问题描述】:

我正在使用 React Native(聊天),在这个应用程序中我有一个表情符号选择器,但是当用户按下虚拟退格按钮时,表情符号只会删除他们的最后一个 unicode 字节。

如何检测最后一个“聊天”(unicode 集)是否是独立的 emoji unicode?​​p>

拆分代码:

inputValue.substring(0, inputValue.length - 1)

我也尝试使用 Array.from(),然后使用 slice(0,-1),当我控制台记录它时,所有情况的正确解决方案都会出现。但!当我将 SAME 变量设置为 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} 之类的东西都可以正常工作。

我不知道大家怎么想:/

【问题讨论】:

  • 您能否提供一些您尝试从中删除表情符号字符的示例字符串?
  • 请看我的更新。我正在使用 emoji-datasource 并使用 String.fromCodePoint() 解析统一的 unicode,以在用户使用 emoji 选择器选择新的 emoji 时添加它。其他功能是退格虚拟按钮。 (在屏幕上)但是当我尝试上面的代码(更新)时,TextInput(React Native)的工作很奇怪@DavidThomas
  • 不@mplungjan
  • 我认为是 React Native TextInput 问题,因为我在控制台中看到了正确的值,并且如果我将值发送到服务器以使用 react native 调试器检查该值也是正确的。但是当我发送新值时......太奇怪了......我想在向 React Native 项目发布问题之前确定。

标签: javascript string react-native emoji


【解决方案1】:

尝试切片:

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

【讨论】:

  • 这只会删除最后一个 unicode 字节。在节点 "?".length 中返回 2。我认为删除 3 的一些表情符号。
  • 查看我的更新以了解为什么这段代码不能正常工作(在 React Native 中
  • 这个模块看起来不错!!后天我会试试看,如果成功了,我会给你答案!真的谢谢!
猜你喜欢
  • 2011-12-15
  • 2021-07-10
  • 2013-07-29
  • 2017-08-19
  • 1970-01-01
相关资源
最近更新 更多