2

JSフィドル

私はjavascriptで次のような関数を持っています

function myfun()
{
  var a = "'\u0c39";
  alert(a);

}

この関数を呼び出すと、正しい文字が表示されます (この文字はテルグ語の文字です)。

私の問題は、文字列が Java から来ていることです"'\\u0c39"。私は次のように使用しました

function myfun()
{
  var a = "'\\u0c39";
  alert(a.replace("\\\\","\\").toString());

}

しかし、アラート'\u0c39が来ています。ここで何が間違っているのかもしれません。助けてください。よろしくお願いします...

4

2 に答える 2

5

IE 10 での作業 (IE7 モードへの復帰を含む): http://jsfiddle.net/FersM/2/

これを試して:

function myfun()
{
  var a = "'\\u0c39";
  a = a.replace(/\\u([a-f0-9]{4})/gi, function (n, hex) {
      return String.fromCharCode(parseInt(hex, 16));
  });

  alert(a);

}

それを理解したい場合、正規表現は、バックスラッシュ (正規表現リテラル内で必要な二重エスケープ) のすべてのインスタンスと、それに続く正確に 4 桁の 16 進数 (大文字と小文字を問わない) を探し、関数はそれぞれの内容を置き換えます。したがって、戻り値で見つかったシーケンス。戻り値はfromCharCodeを使用して Unicode の「コード ポイント」値を実際の文字に変換しますが、コード ポイントを数値 (10 進数) として必要とするため、最初に 4 つの 16 進数文字を変換する必要があります (最初の括弧の一致、したがって関数の 2 番目の引数 (最初の引数は必要のないシーケンス全体の一致) をparseInt関数を使用して base 引数を "16" として 10 進数に変換します。

于 2013-06-13T13:09:54.637 に答える