JavaScript从字符串中删除ZERO WIDTH SPACE (unicode 8203)
JavaScript remove ZERO WIDTH SPACE (unicode 8203) from string
我正在写一些处理网站内容的javascript。当用户按退格键时,SharePoint文本编辑器倾向于在文本中放置"零宽度空格"字符,这使我的努力受挫。该字符的unicode值为8203,或十六进制的B200。我已经尝试使用默认的"替换"函数来摆脱它。我试了很多变体,但都没有效果:
var a = "om"; //the invisible character is between o and m
var b = a.replace(/'u8203/g,'');
= a.replace(/'uB200/g,'');
= a.replace("''uB200",'');
等等。关于这个主题,我已经尝试了相当多的变体。这些表达式都不起作用(在Chrome和Firefox中测试),唯一有效的是在表达式中键入实际的字符:
var b = a.replace("",''); //it's there, believe me
这会带来潜在的问题。这个角色是隐形的,所以这句台词本身没有意义。我可以通过评论来解决这个问题。但是,如果代码被重用,并且文件使用非unicode编码保存(或者当它部署到SharePoint时,不能保证它不会弄乱编码),它将停止工作。是否有一种方法来写这个使用unicode符号,而不是字符本身?
[我对角色的漫谈]
如果你没见过这个字符,(你可能没有见过,因为它是肉眼看不见的,除非它破坏了你的代码,而你在试图定位bug时发现了它)它是一个真正的a-hole,会导致某些类型的模式匹配故障。我已经为你把野兽关进了笼子:
[] <-小心,别让它跑了。
如果您想看到它,将这些括号复制到文本编辑器中,然后将光标遍历它们。您会注意到您需要三步来传递看起来像2个字符的内容,并且您的光标将跳过中间的一步。
unicode转义中的数字应该是十六进制,而8203的十六进制是200B(这确实是unicode零宽度空间),所以:
var b = a.replace(/'u200B/g,'');
生活的例子:
var a = "om"; //the invisible character is between o and m
var b = a.replace(/'u200B/g,'');
console.log("a.length = " + a.length); // 3
console.log("a === 'om'? " + (a === 'om')); // false
console.log("b.length = " + b.length); // 2
console.log("b === 'om'? " + (b === 'om')); // true
接受的答案对我的情况不起作用。
text.replace(/(^['s'u200b]*|['s'u200b]*$)/g, '')
相关文章:
- 无法呈现js unicode字符“u1F310”
- 正在将unicode转换为十六进制
- 如何将KSC5601转换为unicode
- Unicode字符未在HTML5画布中正确呈现
- 有更好的方法吗?(递归解析HTML unicode实体)
- Unicode字符串替换不适用于完整的变音符号阿拉伯文本
- 将unicode字符串从django传递到javascript
- 使用Javascript将Json中的unicode转换为HTML
- 如何使用JavaScript在HTML标题中正确插入unicode
- 当Python在Javascript中发送时,值将转换为UNICODE
- How to replace space with " "
- Javascript:Unicode符号选择器(用于将数学符号添加到文本区域)
- jquery textcomplete无法使用Unicode字符,并且缺少空格
- JavaScript Unicode Regex - 字符类中的顺序范围
- Javascript 将 unicode 字符串转换为“标题大小写”
- 将 FileReader.readAsBinaryString 转换为 Unicode 转义字符串
- 在 Javascript 中显示 unicode 字符(表情符号)
- 请求返回 unicode 替换字符
- JavaScript从字符串中删除ZERO WIDTH SPACE (unicode 8203)
- Javascript Unicode White Space