LoginSignup
1
1

More than 1 year has passed since last update.

TypeScriptでTwitter APIのtextを生データにデコード(アンエスケープ)する

Posted at

はじめに

Twitter APIでツイートを取得すると、text(ツイート本文)に中途半端なエスケープが入ります。

2022年現在、エスケープされる文字は以下の3つが確認されています。

  • <&lt;
  • >&gt;
  • &&amp;

'(シングルクオート)や`(バッククオート)などは対象ではないようです。

正直、フロントエンドで見せるときにこっちでうまいことエスケープするので、いらんことするなって感じです。

したがって、Twitter APIから取得したtextを生データに戻す関数を作りました。
TypeScriptです。

コード

引数(text)にTwitter APIから受け取ったtextを渡すと、生データにデコードして返してくれます。

const decode = (text: string) => {
  return text
    .replace(/&lt;/g, "<")
    .replace(/&gt;/g, ">")
    .replace(/&amp;/g, "&");
};

コードの解説

現状、TypeScriptだとreplaceAll関数が使えないので、replace関数に正規表現を渡してます。
受け取ったtextからエスケープされた文字列を探索して全て元の文字に変換して返却しています。

まとめ

2022年現在のTwitter APIのエスケープに対応する方法でした。
ただ、今後Twitter APIの仕様変更がないとは限らないので、定期的にチェックする必要があるのかな…と思っています。
(素直に生データ返してくれ…)
もっと良さそうな方法とかあれば、コメントで教えてください〜

参考記事

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1