2015-11-13 4 views
2

Я хочу выразить эмози с помощью javascript. У меня есть файл как ...emoji суррогатная строка с Javascript. Как разобрать?

:-),\ud83d\ude03 
^^,\ud83d\ude03 
^_^,\ud83d\ude03 
:),\ud83d\ude03 
:D,\ud83d\ude03 

, который содержит ключ и Emoji суррогат в качестве значения. Я собираюсь прочитать это, и если строка ввода совпадает с ключом, замените слово этими emoji.

Т.е. тип "^^" заменяется знаком улыбки.

Но есть что-то странное, если я помещаю эти данные в качестве объекта, он хорошо печатает emoji.

как ...

this.emojiStore.osx = { 
       //smile 
       ':-)' : '\ud83d\ude03' 
       , '^^' : '\ud83d\ude03' 
       , '^_^' : '\ud83d\ude03' 
       , ':)' : '\ud83d\ude03' 
       , ':D' : '\ud83d\ude03' 
       //frawn 
       , ':(' : '\ud83d\ude1e' 
       //crying 
       , 'T^T' : '\ud83d\ude22' 
       , 'T_T' : '\ud83d\ude22' 
       , 'ㅜㅜ' : '\ud83d\ude22' 
       , 'ㅠㅠ' : '\ud83d\ude22' 
       //poo 
       , 'shit' : '\ud83d\udca9' 
     }; 

и заменить часть выглядит ...

this.value = emojiList[key]; 

Но когда я прочитал Информации файла, печать строки, как "\ ud83d \ ude22.

Как я могу выразить суррогатную строку с JS? (Я не хочу, чтобы использовать 3-библиотеки.)

FYI, JS файл и целевой файл как закодированный с UTF-8.

======== файла Загрузка Часть

function loadFile(url){ 
    var ret = {}; 
    var rawFile = new XMLHttpRequest(); 
// rawFile.overrideMimeType('text/html; charset=utf-8'); 
    rawFile.open("GET", url, false); 
    rawFile.onreadystatechange = function(){ 
     if(rawFile.readyState === 4){ 
      if(rawFile.status === 200 || rawFile.status == 0) { 
       var allText = rawFile.responseText; 
       var textByLine = allText.split('\n'); 
       for(var i = 0; i < textByLine.length; i++){ 
        if(textByLine[i].trim().length < 1) continue; 
        var key = textByLine[i].split(',')[0].trim(); 
        var value = textByLine[i].split(',')[1].trim(); 
        ret[key] = value; 
       } 
      } 
     } 
    }; 
    rawFile.send(null); 
    console.log(ret); 
    return ret; 
} 

=========== Отредактировано

Я нашел подсказку.

Когда я прочитал из файла, он перечислил \u в \\u, а когда прочитал из текста, он поддерживает то, что он есть.

т.е.

  • версия файла: \ud83d\ude03 в \\ud83d\\ude03
  • версии сценария: \ud83d\ude03 сам

Так дело в том, как предотвратить это меняет \ к \\.

Я все еще не нашел ответа.

ответ

1

нашел ответ, я думаю.

см следовать по ссылке: How do I decode a string with escaped unicode?

function parseUnicode(str){ 
    var r = /\\u([\d\w]{4})/gi; 
    str = str.replace(r, function (match, grp) { 
     return String.fromCharCode(parseInt(grp, 16)); }); 
    return str; 
} 

для справки, Я.С. строковое значение может отличаться строкой, что приходит из файла. Я сделал функцию, чтобы проверить каждый символ, и результат отличается.

function charAnalyst(str){ 

    var result = ''; 
    for(var i = 0; i < str.length; i++){ 
     var aChar = str.charAt(i); 
     result += aChar; 
     console.log(aChar); 
    } 
    console.log(result); 
} 

Я надеюсь, что это будет экономить ваше время: D

 Смежные вопросы

  • Нет связанных вопросов^_^