0

私は文字列を持っています

var str = "か22222";

このように検索したい

str.indexOf("か2"); ここで、「か2」は両方ともマルチバイト文字で、「str」は「か」のみがマルチバイト文字です。

しかし、それでも indexOf の結果を 0 として取得する必要があります。

これをJSで行う方法はありますか??

4

2 に答える 2

1
于 2013-01-16T02:06:23.320 に答える
0

まあ、最も簡単なことは、

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 のノーマライザーを使用することをお勧めします。

于 2013-01-16T02:25:30.343 に答える