相关疑难解决方法(0)

为什么表情符号在Swift字符串中被如此奇怪地处理?

角色(有两个女人,一个女孩和一个男孩的家庭)编码如下:

U+1F469 WOMAN,
?U+200D ZWJ,
U+1F469 WOMAN,
U+200D ZWJ,
U+1F467 GIRL,
U+200D ZWJ,
U+1F466 BOY

所以它非常有趣地编码; 单元测试的完美目标.然而,斯威夫特似乎不知道如何对待它.这就是我的意思:

"???".contains("???") // true
"???".contains("") // false
"???".contains("\u{200D}") // false
"???".contains("") // false
"???".contains("") // true
Run Code Online (Sandbox Code Playgroud)

所以,斯威夫特说它包含自己(好)和一个男孩(好!).但它说它不包含女人,女孩或零宽度木匠.这里发生了什么事?斯威夫特为什么知道它包含一个男孩而不是女人或女孩?我能理解它是否将它视为一个单一的角色并且只识别它包含它自己,但事实上它有一个子组件,没有其他人困惑我.

如果我使用类似的东西,这不会改变"".characters.first!.


更令人困惑的是:

let manual = "\u{1F469}\u{200D}\u{1F469}\u{200D}\u{1F467}\u{200D}\u{1F466}"
Array(manual.characters) // ["?", "?", "?", ""]
Run Code Online (Sandbox Code Playgroud)

即使我将ZWJ放在那里,它们也不会反映在字符数组中.接下来是一个小小的说法:

manual.contains("") // false
manual.contains("") // false
manual.contains("") // true
Run Code Online (Sandbox Code Playgroud)

所以我得到了与字符数组相同的行为...这是非常烦人的,因为我知道数组的样子.

如果我使用类似的东西,这也不会改变"".characters.first!.

string unicode emoji swift

524
推荐指数
5
解决办法
3万
查看次数

PHP:编写一个简单的removeEmoji函数

我正在寻找一个简单的功能,可以删除Instagram评论中的表情符号字符.我现在尝试过的(我在SO和其他网站上找到的示例代码中有很多代码):

// PHP class
public static function removeEmoji($string)
{
    // split the string into UTF8 char array
    // for loop inside char array
        // if char is emoji, remove it
    // endfor
    // return newstring
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

php emoji instagram

25
推荐指数
7
解决办法
3万
查看次数

{Emoji_Presentation} 和 {Extended_Pictographic} 有什么区别?

“如何使用 javascript 检测表情符号”问题的最佳答案Extended_Pictographic使用.

Emoji_PresentationDavid Walsh在这篇博文中提到了。

javascript emoji

14
推荐指数
2
解决办法
4748
查看次数

为什么 Unicode 表情符号属性转义匹配数字?

我发现了这种使用Unicode 属性转义使用不使用“巨大魔法范围”的正则表达式来检测表情符号的很棒的方法:

console.log(/\p{Emoji}/u.test('flowers ')) // true
console.log(/\p{Emoji}/u.test('flowers')) // false
Run Code Online (Sandbox Code Playgroud)

但是当我在这个答案中分享这些知识,@Bronzdragon 注意到它\p{Emoji}也匹配数字!这是为什么?数字不是表情符号?

console.log(/\p{Emoji}/u.test('flowers 123')) // unexpectdly true

// regex-only workaround by @Bonzdragon
const regex = /(?=\p{Emoji})(?!\p{Number})/u;
console.log(
  regex.test('flowers'), // false, as expected
  regex.test('flowers 123'), // false, as expected
  regex.test('flowers 123 '), // true, as expected
  regex.test('flowers '), // true, as expected
)

// more readable workaround
const hasEmoji = str => {
  const nbEmojiOrNumber = (str.match(/\p{Emoji}/gu) || []).length;
  const nbNumber = (str.match(/\p{Number}/gu) || …
Run Code Online (Sandbox Code Playgroud)

javascript regex emoji

9
推荐指数
1
解决办法
671
查看次数

如何检测 Snowflake VARCHAR 中的表情符号?

我有一个 1B 行的聊天消息表,其中有一个用于原始消息文本的最大大小的 VARCHAR 列。我如何 -

  1. 仅选择包含 1 个或多个表情符号字符的行
  2. 有效过滤掉没有表情符号的行(如果需要提高性能)

javascript regex sql emoji snowflake-cloud-data-platform

6
推荐指数
2
解决办法
1368
查看次数

javascript检测一个字符串是否只包含Unicode表情符号

我正在使用以下函数替换字符串中的表情符号并且效果很好:

function doEmoji(s){
    var ranges = [
        '\ud83c[\udf00-\udfff]', // U+1F300 to U+1F3FF
        '\ud83d[\udc00-\ude4f]', // U+1F400 to U+1F64F
        '\ud83d[\ude80-\udeff]'  // U+1F680 to U+1F6FF
    ];
    var x = s.toString(16).replace(new RegExp(ranges.join('|'), 'g'),' whatever ');
    return x;
};
Run Code Online (Sandbox Code Playgroud)

现在我想检查该字符串是否仅包含表情符号或空格字符。我之所以要这样做是因为我只想在不存在其他字符(空格除外)的情况下才替换表情符号。

一些例子:

Hello how are you?  //do nothing
?? // replace emojis
??  // replace emojis
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个简单的解决方案,也许是一个正则表达式。谢谢

javascript emoji

5
推荐指数
1
解决办法
5246
查看次数

如何用JavaScript中的表情符号计算字符串的正确长度?

我有点问题

我正在使用NodeJS作为后端。现在,用户拥有一个“传记”字段,用户可以在其中写一些关于他自己的东西。

假设此字段的最大长度为220,并将其作为输入:

???????????????????????????????????????? 
Run Code Online (Sandbox Code Playgroud)

如您所见,没有220个表情符号(有37个表情符号),但是如果我在nodejs服务器中这样做

console.log(bio.length)
Run Code Online (Sandbox Code Playgroud)

输入文本在何处,我得到221。如何“解析”字符串输入以获得正确的长度?关于Unicode是否有问题?

解决了

我使用了这个库:https : //github.com/orling/grapheme-splitter

我尝试过:

var Grapheme = require('grapheme-splitter');
var splitter = new Grapheme();
console.log(splitter.splitGraphemes(bio).length);
Run Code Online (Sandbox Code Playgroud)

长度为37。效果很好!

javascript node.js emoji

5
推荐指数
3
解决办法
1849
查看次数

如何使用 JavaScript 从字符串中删除所有 2019 表情符号字符?

是的,我知道这是一些现有问题的重复。我已经在我的原始问题介绍中通过参考充分承认了这一点。

但是,在 2019 年,该列表扩展到包括额外的 230 个表情符号集,我认为现有答案/范围中没有涵盖这些表情符号。

http://www.unicode.org/Public/emoji/12.0/

我不完全熟悉也不习惯构建要删除的 unicode 范围,所以如果有人知道您可以发布更新版本吗?

根据我的理解,代码有点分散,不能在一个连续的范围内从头到尾轻松定义。


到目前为止,2018 年更新的最佳答案在这里:

/sf/answers/2908059381/

text.replace(/([\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF])/g, '');
Run Code Online (Sandbox Code Playgroud)

如您所见,我还发布了关于更新列表的评论,但作者尚未更新答案。


其他类似问题:

jquery 删除所有表情符号包括新的

从 jquery 中删除表情符号

PHP:编写一个简单的 removeEmoji 函数

javascript emoji

5
推荐指数
0
解决办法
2791
查看次数