【问题标题】:Cleaning string in JS from UTF-32 characters从 UTF-32 字符中清除 JS 中的字符串
【发布时间】:2015-07-15 01:19:11
【问题描述】:

我需要从 JS 中的字符串中清除以 UTF-32 编码的字符,例如“????”。 我尝试使用代码:

str.replace(/[^\u0000-\uFFFF]/gi, '')

但这行不通。

【问题讨论】:

  • Java/JS 中的字符串以 UTF-16 编码,而不是 UTF-32。
  • 我的意思是用 2 个字符编码的特殊符号
  • @RemyLebeau 解释它。 `

标签: javascript utf-32


【解决方案1】:

对于我使用的干净消息

function fixedCharCodeAt(str, idx) {
  var code = str.charCodeAt(idx);
  if (0xD800 <= code && code <= 0xDBFF) { 
    // Upper auxiliary char
    var hi = code;
    var low = str.charCodeAt(idx+1);
    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
 }
 if (0xDC00 <= code && code <= 0xDFFF) { 
   // Lower auxiliary symbol
    var hi = str.charCodeAt(idx-1);
    var low = code;
    return ((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000;
  }
  return code;
}

function cleaningMsgFromBreakingSymb(message_old) {
  var new_message = "";
  for (var i = 0, len = message_old.length; i < len; i++) {
    if (fixedCharCodeAt(message_old, i) < 65535){
        new_message += message_old[i];
    };
  };
  return new_message;
}

【讨论】:

    猜你喜欢
    • 2016-05-21
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2018-01-05
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    相关资源
    最近更新 更多