HarmonyOS 如何实现点击删除一个一个删?

如题:HarmonyOS 如何实现点击删除一个一个删?

阅读 529
1 个回答

可参考如下代码中的删除逻辑:

@Entry
@Component
struct Index {
  @State message: string = '';

  build() {
    Column() {
      TextInput({ text: $$this.message }).backgroundColor('#00000000').borderWidth(1)
      Button('x').onClick(() => {
        if (this.message.length > 0) {
          const c = this.message.charAt(this.message.length-2);
          //单个emoji的组合就是高位+低位,所以对于辅助平面内的代理对,做到整个移除或保留即可
          //如果字符串的最后一个是表情包,则包含两个字符(高位+低位置)
          //如果判断倒数第二个字符满足码位范围['\uD800','\uDBFF'],满足则为emoji,则需要特殊截取,同时剔除掉最后两个字符,才能将最后一个emoji表情包删除
          if (c >= '\uD800' && c <= '\uDBFF') {
            console.info("yes:"+c)
            this.message = this.message.substring(0, this.message.length - 2);
            //如果判断倒数第二个字符不满足条件,则最后一个是非emoji表情包的普通字符,正常截取,剔除掉最后一个字符,即可
          }else {
            this.message = this.message.substring(0, this.message.length - 1);
          }
        }
      })
    }
    .width("100%")
    .height("100%")
    .justifyContent(FlexAlign.Center)
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进