Javascript如何搜索双字节字符串与单字节字符串,反之亦然
Javascript how to search double byte string with single byte string and vice versa
我有一个字符串
var str = "か22222";
我想这样搜索
str.indexOf(" info2 ");其中" 2"都是多字节字符,而"str"只有" "作为多字节
但是我仍然应该得到indexOf的结果为0。
是否有任何方法做到这是JS ??
No。字符2
(U+32, DIGIT TWO)和字符2
(U+FF12, FULLWIDTH DIGIT TWO)是两个完全不同的东西,无论出于什么可怕的历史原因,搜索其中一个将不匹配另一个。
最简单的方法就是
var result=str.match(/か[22]/);
alert("match at "+result.index);
您也可以使用[1-9]这样的字符范围,因为全宽数字占用连续的代码点。
一个更通用的解决方案是在"多字节"(更广为人知的是"全宽度")和单宽度字符之间进行转换。稍微有点粗糙的转换是将0xfee0添加到相应的半宽度代码点。假设您要将输入字符串转换为全宽度表单;你可以这样做:
var arr=[];
for(var i;i<str.length;i++){
arr[i] = str.charPointAt(i);
i(arr[i]>=0x30 && arr[i]<=0x39) { arr[i] += 0xfee0; }
}
var full_width_string=String.fromCharCode.apply(null,arr);
现在你可以搜索全宽字符串。
最好使用Unicode库或Javascript规范器
相关文章:
- 本地存储中的字符串到字节数组转换
- 将十六进制字符串转换为字节数组
- 如何使用Node.js将字节数组转换为字符串
- 如何在javascript中将字节数组转换为字符串
- 奇怪的日期()是用包含空字节的字符串创建的
- 将 base64 编码的字节转换为在 Javascript 和 C# 中不同的字符串
- 删除错误.MongooDB + Express.传入的参数必须是 12 个字节的单个字符串或 24 个十六进制字符的字符
- 从 IEEE 754 单精度(32 位)浮点(字符串表示)创建字节
- JavaScript:从图像中删除字节(base64 字符串)
- 字节到二进制字符串的 Javascript 数组
- Javascript:将对象强制转换为字节数组并转换为字符串
- javascript中字节数组到十六进制字符串的转换
- Javascript-具有所有可能组合的字节字符串
- JavaScript字节字符串和jQuery AJAX
- 将Data-URL转换为有效的字节字符串
- 如何将多字节字符串数组转换为32位整型数组
- Javascript数组返回到字节字符串
- 我如何将JavaScript浮点PCM音频数组转换为小端字节字符串
- Javascript如何搜索双字节字符串与单字节字符串,反之亦然
- 如何在Nodejs中写入字节字符串到文件