相关疑难解决方法(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万
查看次数

为什么 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
查看次数

如何从字符串中删除表情符号字符?

我从移动设备获得了文本输入.它包含表情符号.在C#中,我将文本作为

Text  text
Run Code Online (Sandbox Code Playgroud)

简单地说,我想要输出文本

Text text
Run Code Online (Sandbox Code Playgroud)

我试图用rejex从文本中删除所有这样的表情符号..除了,我不知道如何将该表情符号转换为它的unicode序列..我该怎么做?

编辑:

我正在尝试将用户输入保存到mysql中.它看起来像mysql UTF8并不真正支持unicode字符,正确的方法是通过更改架构,但我认为这不是我的选择.所以我试图删除所有的表情符号字符,然后将其保存在数据库中.

这是我相关专栏的架构:

在此输入图像描述

我使用Nhibernate作为我的ORM,生成的插入查询如下所示:

Insert into `Content` (ContentTypeId, Comments, DateCreated) 
values (?p0, ?p1, ?p2);
?p0 = 4 [Type: Int32 (0)]. ?p1 = 'Text  text' [Type: String (20)], ?p2 = 19/01/2015 10:38:23 [Type: DateTime (0)]
Run Code Online (Sandbox Code Playgroud)

当我从日志中复制此查询并直接在mysql上运行时,我收到此错误:

1 warning(s): 1366 Incorrect string value: '\xF0\x9F\x98\x80 t...' for column 'Comments' at row 1   0.000 sec
Run Code Online (Sandbox Code Playgroud)

此外,我试图将其转换为编码字节,它并没有真正起作用..

在此输入图像描述

c# mysql unicode emoji

8
推荐指数
1
解决办法
1万
查看次数

在SQLite中处理Emojis

我希望在使用SQL Lite的文本对话中确定哪些表情符号最常用.我正在使用数据库浏览器,表情符号就像在iMessage中一样显示(见下图),但我对如何计算它们感到难过.

我在想是否有办法检查并查看字符是不是字母/数字/标点符号,然后我可以计算所有不符合先决条件列表的字符的频率.也就是说,我不熟悉SQLite命令以及如何实现这一点.

有没有更好的方法来解决这个问题?如果您需要更多背景来回答这个问题,请告诉我.

表情符号示例

sql sqlite encoding emoji

8
推荐指数
1
解决办法
494
查看次数

标签 统计

emoji ×4

unicode ×2

c# ×1

encoding ×1

javascript ×1

mysql ×1

regex ×1

sql ×1

sqlite ×1

string ×1

swift ×1