我有一个字符串
var str = "か22222";
我想这样搜索
str.indexOf("か2"); 其中“か2”都是多字节字符,“str”只有“か”作为多字节
但我仍然应该得到 indexOf 的结果为 0。
有什么办法可以做到这一点是 JS 吗?
我有一个字符串
var str = "か22222";
我想这样搜索
str.indexOf("か2"); 其中“か2”都是多字节字符,“str”只有“か”作为多字节
但我仍然应该得到 indexOf 的结果为 0。
有什么办法可以做到这一点是 JS 吗?
好吧,最简单的事情是
var result=str.match(/か[22]/);
alert("match at "+result.index);
您还可以使用 [1-9] 之类的内容作为字符范围,因为全角数字占用连续的代码点。
一个更通用的解决方案是在某个时候在“多字节”(更好地称为“全宽”)和单宽字符之间进行转换。稍微hacky的转换是将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);
现在您可以搜索全角字符串。
最好为 Javascript 使用 Unicode 库或规范器。