我正在尝试解析推文,以便在主题标签,提及等上添加链接。但是当推文包含像“”这样的特殊字符时,此字符计为2,例如:
console.log("it was fantastic. Thanks a lot guys ".length);
这一行返回38,而不是37.所以当我使用来自twitter api实体的“indices”时,一切都会转移。
有没有解决方法可以避免这种情况?
提前致谢!
答案 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长度来进行任何类型的解析。如果没有机会你可以打破代理对 - 你很好。