2015-05-05 2 views
1

Мне нужно очистить символы, закодированные в UTF-32, из строки в JS, например "". Я пытался использовать код:Очистка строки в JS от символов UTF-32

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

Но это не работает.

+0

Строки в Java/JS закодированы в UTF-16, а не в UTF-32. –

+0

Я имел в виду, что специальные символы, закодированные двумя символами –

ответ

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; 
}