テキストの文字数カウント — スペース含む・含まない

スペースを含む・含まないオプション付きでテキストの文字数をカウントします。正確な文字カウントのために、文字、コードポイント、書記素クラスタの違いを理解しましょう。

Basic Counting

詳細な説明

文字カウント:見た目以上に奥が深い

文字カウントは簡単に見えます — 文字列の .length を使えばいいだけですよね?実際には「文字」はコンテキストによって異なる意味を持ち、正確なカウントにはUnicodeの理解が必要です。

基本的な文字カウント

最もシンプルなアプローチはスペースを含むすべての文字を数えます:

const totalChars = text.length;
const charsNoSpaces = text.replace(/\s/g, "").length;

ただし、JavaScriptの .length は可視文字の数ではなくUTF-16コードユニットの数を返します。この区別は絵文字や特定の文字体系で重要になります。

文字 vs. コードポイント vs. 書記素クラスタ

「👨‍💻」(男性テクノロジスト)の絵文字を考えてみましょう:

  • UTF-16コードユニット — JavaScriptでは "👨‍💻".length は7(ZWJシーケンスのエンコーディングによる)
  • Unicodeコードポイント[...text].length でコードポイント数を取得
  • 書記素クラスタ — ユーザーが1つの文字として認識するもの

ユーザー向けの文字カウントには、通常書記素クラスタが正しい単位です:

const segmenter = new Intl.Segmenter("en", { granularity: "grapheme" });
const graphemeCount = [...segmenter.segment(text)].length;

スペース含む vs. 含まない

ほとんどの文字カウンターは両方のモードを提供します:

モード 含むもの 用途
スペース含む すべての文字 SMS制限、データベースフィールド長
スペース含まない 非空白文字のみ 翻訳料金、組版

特殊文字

  • 改行 (\n\r\n) — プラットフォームによって1文字または2文字としてカウント
  • タブ (\t) — 視覚的な幅に関係なく常に1文字
  • ゼロ幅文字\u200B(ゼロ幅スペース)、\uFEFF(BOM)は不可視だがカウントされる

実用的な制限

一般的な文字制限:Twitter/Xの投稿(280文字)、SMSメッセージ(GSM-7で160文字、Unicodeで70文字)、メタディスクリプション(155-160文字)、HTMLタイトルタグ(50-60文字)。正確な文字数を知ることで、これらの境界内に収めることができます。

ユースケース

文字カウントはソーシャルメディア投稿(Twitter/Xの280文字制限)、SMSメッセージ(160文字制限)、SEOメタディスクリプション(155-160文字)、データベースフィールドのバリデーション、文字単位で課金する翻訳サービスに不可欠です。開発者もフォーム入力の長さバリデーションに使用します。

試してみる — Word Counter

フルツールを開く