使用特殊字符解析推文

时间:2013-12-24 00:59:51

标签: javascript node.js twitter

我正在尝试解析推文,以便在主题标签,提及等上添加链接。但是当推文包含像“”这样的特殊字符时,此字符计为2,例如:

console.log("it was fantastic. Thanks a lot guys ".length);

这一行返回38,而不是37.所以当我使用来自twitter api实体的“indices”时,一切都会转移。

有没有解决方法可以避免这种情况?

提前致谢!

1 个答案:

答案 0 :(得分:3)

您需要处理代理项对 - 由两个伪字符组成的字符。退房:https://github.com/eller86/surrogate-pair.js。它看起来有点过时,但完成了工作:

var sp = require('surrogate-pair')

console.log(sp.countCodePoints('it was fantastic. Thanks a lot guys ')) // 37

但请记住,这会带来很大的开销。老实说,我认为不需要知道utf8长度来进行任何类型的解析。如果没有机会你可以打破代理对 - 你很好。