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 个十六进制数字(无论大小写),然后该函数将替换每个反斜杠的内容因此找到带有返回值的序列。返回值使用fromCharCode将 Unicode“码位”值转换为实际字符,但它要求码位为数字(十进制),因此我们必须先转换 4 个十六进制字符(第一个括号匹配,因此函数的第二个参数,第一个参数是我们不需要的整个序列匹配)使用parseInt函数转换为小数,基本参数为“16”。

于 2013-06-13T13:09:54.637 回答
1

您可以将此评估代码用于该问题

http://jsfiddle.net/6Hmyk/

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

   alert(eval('"'+a+'"'));   

}

myfun1();

在该代码中,\\ 将更改为 \ 并且 eval 代码将其作为 unicode 字符运行

于 2013-06-13T14:05:34.383 回答