所以我在这里设置了一个codepen来演示我的问题:http://codepen.io/anon/pen/yNYzXx
var emojiString = "I \u2764\uFE0F emoji!";
var parsedString = twemoji.parse(emojiString);
$('#string-result').html(parsedString);
var parsedInput = twemoji.parse($('#emoji-input').val());
$('#input-result').html(parsedInput);
如果我输入文字“I \ u2764 \ uFE0F表情符号!”进入输入框并单击go我希望在两行上都得到相同的结果而不是解析输入文本但变量是。
答案 0 :(得分:0)
您可能在输入字段中输入了I \u2764\uFE0F emoji!
。当您在输入字段中键入时,实际上您会获得字符串"I \\u2764\\uFE0F emoji!"
而不是字符串"I \u2764\uFE0F emoji!"
,请注意额外的\
。
在您的变量中,在字符串文字"I \u2764\uFE0F emoji!"
中,\
中的\u2764
具有特殊含义,它是一个角色字符。它实际上表示\
表示Unicode代码点,而不是表示字符\u2764
。代码点\u2764
和\uFE0F
一起构成了心脏角色。换句话说,"\u2764\uFE0F"
是代表一个字符的代码。
当您在输入字段中键入I \u2764\uFE0F emoji!
时,您没有输入心形字符,而是实际传递了常规\
字符。由于\
具有特殊含义,我们将其表示为类似于此\\
的字符串,因此输入字段中的字符串看起来不同。
所以基本上你输入的JavaScript代码代表你想要输入的字符,而不是字符本身。我们可以通过评估您键入的内容来解决这个问题,就像它是JavaScript代码一样。如果您将var parsedInput = twemoji.parse($('#emoji-input').val());
替换为var parsedInput = twemoji.parse(eval("'" + $('#emoji-input').val() + "'"));
,则代码将按预期工作。另外,避免使用eval,因为它将运行任何传递给它的东西。