2017-02-06 6 views
0

文字列中の絵文字/ Unicode文字を読み書きする方法はありますか?感情を読み取って感情分析のためにJavaScriptの文字列表現に変換します

私はデータグリッドのCSVエクスポートを作成しており、Twitterの顔文字の文字列表現のライブラリを作成したいと考えています。私は、その文字列表現で顔文字を置き換えたいと思います。

これは、文字列の例です:

Absa!!!! 

これはCSVバージョンは次のようになります。

😂😂😂 Absa!!!! 

私はそれをこのような何かをレンダリングしたいと思います:

(FACE WITH TEARS OF JOY) (FACE WITH TEARS OF JOY) (FACE WITH TEARS OF JOY) Absa!!!! 

私はこのサイトからのUnicode、バイト(UTF-8)の詳細と絵文字を得た:私もどこから始めれば分からないhttp://apps.timwhitlock.info/emoji/tables/unicode

= U+1F602 \xF0\x9F\x98\x82 FACE WITH TEARS OF JOY 

!私はif文の束と正規表現を仮定する?顔文字が正規表現にマッチすると、テキストバージョンに置き換えられます。

私は絵文字を削除することについての有用な記事の束を見つけましたが、それらを置き換えるものはありません。これは、このような例である:

/(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c[\ude32-\ude3a]|[\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/g 

同じポストで他の有用な回答の束がありますHow to remove emoji code using javascript?

私はあなたのフィードバックや入力や提案をいただければ幸いです!

ありがとうございました!ここで

+0

正規表現はまったく必要ありません。文字列ごとに文字列を進めるだけです。 – OrangeDog

答えて

0

は私のソリューションです:

  1. 私はすべての顔文字の辞書を作成した(例では、私は2つの辞書項目を持っている)
  2. 私は文字列と2つのその他のブールパラメータをexceptsで機能を作成しました 顔文字は、その文字列表現に変換されます:

アウトカム(角度サービスノートを参照してください)。これはセンチメント分析に最適です。

(function() { 
    /** 
    * 
    * @param {string} string    String to convert 
    * @param {boolean} [fill]    leaves the emoji in place, and inserts the description afterwards 
    * @param {boolean} [omitSkinColour] removes skin colour from both the emoji if fill is true, and the description 
    * @returns {string}      Emoji-less string 
    */ 
    'use strict'; 

    angular 
     .module('portalDashboardApp') 
     .factory('ReplaceEmojiService', ReplaceEmojiService); 

    ReplaceEmojiService.$inject = []; 

    function ReplaceEmojiService() { 

     var service = { 
      replaceEmoji: replaceEmoji 
     }; 

     return service; 

     function replaceEmoji(str, fill, omitSkinColour) { 

      var dictionary = { 
       "35": { 
        "8419": { 
         "name": "keycap: #" 
        }, 
        "65039": { 
         "8419": { 
          "name": "keycap: #" 
         } 
        } 
       }, 
       "42": { 
        "8419": { 
         "name": "keycap: *" 
        }, 
        "65039": { 
         "8419": { 
          "name": "keycap: *" 
         } 
        } 
       } 
      } 

      fill = fill || false; 
      omitSkinColour = omitSkinColour || false; 

      if (omitSkinColour) { 
       str = str.replace(/(?:\uD83C[\uDFFB-\uDFFF])/g, ''); 
      } 

      var newStr = ''; 

      for (var i = 0; i < str.length;) { 
       var localDict = dictionary; 
       var j = i; 
       var char = str.charCodeAt(j); 

       while (localDict.hasOwnProperty(char)) { 
        localDict = localDict[char]; 
        char = str.charCodeAt(++j); 
       } 

       if (localDict.name) { 
        if (fill) { 
         newStr += str.slice(i, j) + '(' + localDict.name + ')'; 
        } else { 
         newStr += '(' + localDict.name + ')'; 
        } 
       } else { 
        newStr += str[i]; 
       } 

       i += j - i || 1; 
      } 
      return newStr; 
     } 
    }; 

})(); 
+0

どこかであなたの辞書を共有することができますか? – doicomehereoften1

0

あなたは....あなたは

  1. XML
  2. CSV
  3. と、より多くのが好き正式に #EmojiCodeSheetライブラリ内のすべての絵文字の文字列表現を見つけることができます
+0

ありがとうございます。私は、以下に掲示された答えに従って、辞書付きのサービスを作成しました。 :D – onmyway

関連する問題