猿问

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

我尝试将 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


慕侠2389804
浏览 93回答 1
1回答

千万里不及你

几个问题:您有一个“八进制值”,但仅在parseInt.&nbsp;您需要使用 base 8 来解析八进制数。您的输入字符串中没有反斜杠。"\3"与 完全相同"3",因为您实际上是在转义“3”(这不是必需的)。如果您想要文字反斜杠,则需要转义反斜杠:"\\"。尽管您创建了用于匹配输入中的八进制数的正则表达式 (as&nbsp;r3),但您从不使用该正则表达式。其他备注:当输入参数为空时,您返回一个字符串,但在另一种情况下,您的函数不返回任何内容。它只是输出它。您应该返回字符串。如果参数是undefinedthen== null也将是true,因此不需要条件中的||表达式if。不要使用document.write.&nbsp;innerHTML分配给DOM 元素的属性几乎总是更好。obj1当实际上期望它具有字符串数据类型时,不要命名您的变量。function decodeUnicodeChar(str) {&nbsp; if (str == null) return ""; // no need extra test on undefined&nbsp; var r = /\\u([\d\w]{4})/gi;&nbsp; var r3 = /\\([\d\w]{3})/gi;&nbsp; str = str.replace(r, (match, grp) => String.fromCharCode(parseInt(grp, 16)))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.replace(r3, (match, grp) => String.fromCharCode(parseInt(grp, 8)))&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;.replace(/\n/g, "<br>");&nbsp; return decodeURIComponent(str); // return it}console.log(decodeUnicodeChar("Hello \\361o")); // escape backslash最后,我建议使用 JSON 格式的字符串,它允许对 unicode 字符进行编码。然后你只需要打电话JSON.parse。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答