前端-全栈

处理空格和特殊字符

2019-02-26  本文已影响0人  光明程辉

解决关于 \u00a0 特殊空格的值。

replace(/\u00a0|\s+/ig, '');

/*
  * 转换特殊字符*/
  /*编码*/
  encode:function(str) {
    var patt=/[\ud800-\udbff][\udc00-\udfff]/g; // 检测utf16字符正则
    str = str.replace(patt, function(char){
      var H, L, code;
      if (char.length===2) {
        H = char.charCodeAt(0); // 取出高位
        L = char.charCodeAt(1); // 取出低位
        code = (H - 0xD800) * 0x400 + 0x10000 + L - 0xDC00; // 转换算法
        return "&#" + code + ";";
      } else {
        return char;
      }
    });
    var entityMap = {
      "&": "&",
      "<": "&lt;",
      ">": "&gt;",
      '"': '&#92;&#34;',
      // "'": '&#39;',
      "/": '&#x2F;',
      "$":'&#36;',
      // "\\":"&#92;&#92;"
    };
    // encodeURIComponent该方法是为了兼容后端不兼容\的问题
    // return encodeURIComponent(String(str).replace(/[&<>"\/$]/g, function (s) {
    //   return entityMap[s];
    // }));
      var delStr =  String(str).replace(/[&<>"\/$]/g, function (s) {
          return entityMap[s];
      });
      //  (/\\u00a0|\s+/ig, '') 就是这个解决了 u00a0 的空格bug
      return delStr.replace(/\n/g,'\\n').replace(/\\u00a0|\s+/ig, '');
  },
上一篇 下一篇

猜你喜欢

热点阅读