首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除javascript中一组表情符号中的最后一个表情符号?

如何删除javascript中一组表情符号中的最后一个表情符号?
EN

Stack Overflow用户
提问于 2017-10-24 11:47:02
回答 5查看 783关注 0票数 4

假设我把这3个表情符号串在一个字符串中:

除了字符串中的表情符号外,没有任何空格或任何其他字符。

如何删除javascript中的最后一个表情符号?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-10-24 12:32:55

好的,下面是我解决这个问题的方法:

代码语言:javascript
复制
function deleteEmoji(emojiStr) {
    let emojisArray = emojiStr.match(/([\uD800-\uDBFF][\uDC00-\uDFFF])/g);
    emojisArray = emojisArray.splice(0, emojisArray.length - 1);
    return emojisArray.join("");
}
let emojitext = "";
console.log(deleteEmoji(emojitext));
票数 0
EN

Stack Overflow用户

发布于 2020-10-24 12:01:11

下面的答案没有使用任何特殊的包,并且安全地删除了最后一个表情符号

代码语言:javascript
复制
function safeEmojiBackspace(str)
{
  let initialRealCount = fancyCount(str);
  while(str.length > 0 && fancyCount(str) !== initialRealCount - 1)
  {
      str = str.substring(0,str.length - 1);
  }
  return str;
}
function fancyCount(str){
  const joiner = "\u{200D}";
  const split = str.split(joiner);
  let count = 0;
  for(const s of split){
    //removing the variation selectors
    const num = Array.from(s.split(/[\ufe00-\ufe0f]/).join("")).length;
    count += num;
  }
  //assuming the joiners are used appropriately
  return count / split.length;
}

样本使用

代码语言:javascript
复制
let str = "something";
str = safeEmojiBackspace(str);//"something"
票数 2
EN

Stack Overflow用户

发布于 2017-10-24 11:55:49

你可以做到这一点。它将永远移除最后的表情符号。

代码语言:javascript
复制
function removeEmoji() {
  var emoStringArray = document.getElementById('emoji').innerHTML;
  var lastIndex = emoStringArray.lastIndexOf(" ");
  var stripedEmoStringArray = emoStringArray.substring(0, lastIndex);
  document.getElementById('emoji').innerHTML = stripedEmoStringArray;
}
代码语言:javascript
复制
<p id="emoji">
  
</p>

<button onclick="removeEmoji()">Remove</button>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46909766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档