删除javascript中不同范围内的Unicode字符
Remove Unicode characters within various ranges in javascript
我试图删除字符串中的每个Unicode字符,如果它落在以下任何范围内。
'uD800-'uDFFF
'u1D800-'u1DFFF
'u2D800-'u2DFFF
'u3D800-'u3DFFF
'u4D800-'u4DFFF
'u5D800-'u5DFFF
'u6D800-'u6DFFF
'u7D800-'u7DFFF
'u8D800-'u8DFFF
'u9D800-'u9DFFF
'uAD800-'uADFFF
'uBD800-'uBDFFF
'uCD800-'uCDFFF
'uDD800-'uDDFFF
'uED800-'uEDFFF
'uFD800-'uFDFFF
'u10D800-'u10DFFF
作为最初的原型,我试图通过在replace
函数中使用正则表达式来删除第一个范围内的字符。
var buffer = "he'udfffllo world";
var output = buffer.replace(/['ud800-'udfff]/g, "");
d.innerText = buffer + " is replaced with " + output;
在这种情况下,字符似乎被很好地替换了。
但是,当我用
替换它时var buffer = "he'udfffllo worl'u1dfffd";
var output = buffer.replace(/['ud800-'udfff'u1d800-'u1dfff]/g, "");
d.innerText = buffer + " is replaced with " + output;
我看到一些意想不到的东西。我的输出显示为:
> > > >
这里有两点需要注意:
-
'u1dfff
不显示为一个字符-'u1dff
被转换为一个字符,f
在最后被视为自己的字符 - 结果为空字符串
如果你能给我一些建议,我将不胜感激。
编辑
我的总体目标是过滤掉encodeURIComponent
函数认为无效的所有字符。我运行了一些测试,发现上面的列表是无效的字符集。例如,下面的代码首先将1dfff
转换为unicode字符,然后将其传递给encodeURIComponent
,这会导致后一个函数引发异常。
var v = String.fromCharCode(122879);
var uriComponent = encodeURIComponent(v);
在@Blender指出我在代码中使用x
而不是u
来表示Unicode字符后,我编辑了部分问题。
编辑2
我进一步研究了获取"无效"unicode范围的技术,结果证明,如果您给String.fromCharacterCode
一个大于16位的数字,它只会查看该数字的最低16位。这就解释了我看到的模式。结果是,我只需要考虑第一个范围
似乎您正试图从字符串中删除Unicode代理代码单元。但是,只有U+D800到U+DFFF是代理代码点;您命名的其余值不是,并且可以分配给有效的Unicode字符。在这种情况下,以下内容就足够了(使用'u
而不是'x
来引用Unicode字符):
buffer.replace(/['ud800-'udfff]/g, "");
相关文章:
- 无法呈现js unicode字符“u1F310”
- Unicode字符未在HTML5画布中正确呈现
- jquery textcomplete无法使用Unicode字符,并且缺少空格
- 在 Javascript 中显示 unicode 字符(表情符号)
- 将文本和html unicode字符添加到textarea元素中
- 用unicode字符提取字符串中的单词
- 如何替换不可打印的unicode字符(Javascript)
- PHP:如何用unicode字符将文件写入磁盘
- JavaScript 转到带有 Unicode 字符的 URL
- 为什么这个 unicode 字符的警报不成功
- 如何在包含 Unicode 字符 'u00A0' 的表中包装单词
- Mozilla Builder 编辑器取消转义 Unicode 字符,并发 w. AMO 上传失败
- 正则表达式匹配所有单词,包括标点符号和 unicode 字符.没有空格
- 正则表达式与专业 unicode 字符不匹配
- 使用带有 unicode 字符的 ng-pattern (Angular.JS) 的不良结果
- 删除不受支持的 unicode 字符,否则显示为正方形
- Javascript:非 unicode 字符代码到 unicode 字符
- 交换 Unicode 字符
- 从字符串中剥离 javascript unicode 字符 8206
- Jquery DataTables 无法显示 unicode 字符