HarmonyOS TextArea删除功能,表情如何删除

HarmonyOS
2024-12-24 15:52:32
734浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
FengTianYa

解决方案的代码如下:

@Entry
@Component
struct TestView {

  @State testString: string = "test";
  
  build() {
    Column({space : 5}) {
      Text(this.testString)
        .textAlign(TextAlign.Center)
        .width("100%")
        .height("40")
        .backgroundColor(Color.Yellow)

      Row({space : 5}) {
        Blank()
        Text("添加字符串")
          .height("40")
          .backgroundColor(Color.Orange)
          .onClick(() => {
            this.testString = this.testString + "q"
          })

        Text("添加表情")
          .height("40")
          .backgroundColor(Color.Orange)
          .onClick(()=>{
            this.testString = this.testString+"\uD83D\uDC33\uD83D\uDC20";

            //最后一个字符
            const t = this.testString.length -2;
            console.info('添加表情后的字符串的倒数第二个字符的索引值:'+t)
            const lastSecondChar = this.testString.charAt(t);
            console.info("倒数第二个字符:"+lastSecondChar);
            if (lastSecondChar >= '\uD800' && lastSecondChar <= ('\uDBFF'+1)) {
              console.info("yes:"+lastSecondChar)
            }
            console.info("最后一个字符的长度="+lastSecondChar.length)
            console.info("字符串长度="+(this.testString.length))
          })
        Text("删除末尾")
          .height("40")
          .backgroundColor(Color.Orange)
          .onClick(()=>{
            if (this.testString.length > 0) {
              const c = this.testString.charAt(this.testString.length-2);
              //单个emoji的组合就是高位+低位,所以对于辅助平面内的代理对,做到整个移除或保留即可
              //如果字符串的最后一个是表情包,则包含两个字符(高位+低位置)
              //如果判断倒数第二个字符满足码位范围['\uD800','\uDBFF'],满足则为emoji,则需要特殊截取,同时剔除掉最后两个字符,才能将最后一个emoji表情包删除
              if (c >= '\uD800' && c <= '\uDBFF') {
                console.info("yes:"+c)
                this.testString = this.testString.substring(0, this.testString.length - 2);
                //如果判断倒数第二个字符不满足条件,则最后一个是非emoji表情包的普通字符,正常截取,剔除掉最后一个字符,即可
              }else {
                this.testString = this.testString.substring(0, this.testString.length - 1);
              }
            }
          })
        Blank()
      }
      .width("100%")
      .height("40")
      Blank()
    }
    .width("100%")
    .height("100%")
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
分享
微博
QQ
微信
回复
2024-12-24 18:49:48


相关问题
HarmonyOS元服务添加、删除功能
1855浏览 • 1回复 待解决
【JS】如何实现左滑删除功能
4277浏览 • 1回复 待解决
Text如何实现删除线的功能
2221浏览 • 1回复 待解决
HarmonyOS addComponentContent如何删除
857浏览 • 1回复 待解决
如何实现ArrayList的删除、去重等功能
1228浏览 • 1回复 待解决
侧滑删除功能的列表有哪些?
1555浏览 • 1回复 待解决
HarmonyOS NavPathStack如何删除元素
689浏览 • 1回复 待解决
HarmonyOS Grid拖动+删除
776浏览 • 0回复 待解决
HarmonyOS 生成的faultlog如何删除
719浏览 • 1回复 待解决
PolarDB删除如何找回 ?
3380浏览 • 1回复 待解决
HarmonyOS 如何删除三方库
990浏览 • 1回复 待解决
删除按钮在哪里???
8084浏览 • 2回复 待解决
HarmonyOS Bean对象如何删除对应的key
777浏览 • 1回复 待解决