ユーザーアイコン

mizuko

8日前

0
0

X の文字数制限に対応したシェアテキスト生成方法

TypeScript

X でシェアする際の文字数制限(280文字)に対応するため、以下の方法で実装する。

文字数カウント方法:

  • 半角文字(ASCII: 0x00-0x7F): 1文字としてカウント
  • 全角文字(日本語、絵文字など): 2文字としてカウント

実装のポイント:

  1. 文字コードで半角・全角を判定
  2. 動的にコンテンツを追加(少ない件数から始めて、文字数に余裕があれば増やす)
  3. 文字数オーバーしたら前の状態に戻す
const getXLength = (text) => { let length = 0; for (const char of text) { const code = char.charCodeAt(0); if (code >= 0x00 && code <= 0x7f) { length += 1; // 半角 } else { length += 2; // 全角 } } return length; };

注意点:

  • URLは実際の長さでカウントされる(t.co短縮URLの23文字固定ではない)
  • 改行文字も1文字としてカウント
  • Web Intent APIを使用: https://x.com/intent/tweet?text=${encodedText}