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

HarmonyOS
2天前
浏览
收藏 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%")
  }
}
分享
微博
QQ
微信
回复
2天前
相关问题
Text如何实现删除线的功能
1056浏览 • 1回复 待解决
【JS】如何实现左滑删除功能
3483浏览 • 1回复 待解决
HarmonyOS元服务添加、删除功能
805浏览 • 1回复 待解决
HarmonyOS addComponentContent如何删除
34浏览 • 1回复 待解决
如何实现ArrayList的删除、去重等功能
438浏览 • 1回复 待解决
侧滑删除功能的列表有哪些?
808浏览 • 1回复 待解决
HarmonyOS NavPathStack如何删除元素
44浏览 • 1回复 待解决
HarmonyOS 生成的faultlog如何删除
324浏览 • 1回复 待解决
PolarDB删除如何找回 ?
2519浏览 • 1回复 待解决
HarmonyOS Grid拖动+删除
153浏览 • 0回复 待解决
HarmonyOS 如何删除三方库
52浏览 • 1回复 待解决
删除按钮在哪里???
6909浏览 • 2回复 待解决