为了账号安全,请及时绑定邮箱和手机立即绑定

在javascript中将Oct转换为字符串中的文本

在javascript中将Oct转换为字符串中的文本

慕侠2389804 2022-10-21 14:56:22
我尝试将 oct 值从我的字符串转换为 char 我执行此逻辑,但它没有返回我想要的正确值。    decodeUnicodeChar(obj1) {      if (obj1 == null || obj1 == undefined)        return "";      var r = /\\u([\d\w]{4})/gi;      var r3 = /\\([\d\w]{3})/gi;      obj1 = obj1.replace(r, function (match, grp) {        return String.fromCharCode(parseInt(grp, 16));      }).replace(/\n/g, "<br>");      obj1 = unescape(obj1) ? unescape(obj1) : decodeURIComponent(obj1);    console.log(obj1);     document.write(obj1);  }    decodeUnicodeChar("Hello \361o")电流输出:- 你好 \361o需要的输出:- 你好 ño
查看完整描述

1 回答

?
千万里不及你

TA贡献1784条经验 获得超9个赞

几个问题:

  • 您有一个“八进制值”,但仅在parseInt. 您需要使用 base 8 来解析八进制数。

  • 您的输入字符串中没有反斜杠。"\3"与 完全相同"3",因为您实际上是在转义“3”(这不是必需的)。如果您想要文字反斜杠,则需要转义反斜杠:"\\"

  • 尽管您创建了用于匹配输入中的八进制数的正则表达式 (as r3),但您从不使用该正则表达式。

其他备注:

  • 当输入参数为空时,您返回一个字符串,但在另一种情况下,您的函数不返回任何内容。它只是输出它。您应该返回字符串。

  • 如果参数是undefinedthen== null也将是true,因此不需要条件中的||表达式if

  • 不要使用document.writeinnerHTML分配给DOM 元素的属性几乎总是更好。

  • obj1当实际上期望它具有字符串数据类型时,不要命名您的变量。

function decodeUnicodeChar(str) {

  if (str == null) return ""; // no need extra test on undefined

  var r = /\\u([\d\w]{4})/gi;

  var r3 = /\\([\d\w]{3})/gi;

  str = str.replace(r, (match, grp) => String.fromCharCode(parseInt(grp, 16)))

           .replace(r3, (match, grp) => String.fromCharCode(parseInt(grp, 8)))

           .replace(/\n/g, "<br>");

  return decodeURIComponent(str); // return it

}


console.log(decodeUnicodeChar("Hello \\361o")); // escape backslash

最后,我建议使用 JSON 格式的字符串,它允许对 unicode 字符进行编码。然后你只需要打电话JSON.parse



查看完整回答
反对 回复 2022-10-21
  • 1 回答
  • 0 关注
  • 92 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信