行の長さの統計:最小・最大・平均・中央値を計算
行の幅を表す4つの数値が分かります。3行の例では、最短の行が5文字、最長が22文字、中央値が10文字で、平均も併せて表示されます。レイアウトを崩す行を、目で探さずに見つけられます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- short a somewhat longer line mid length
- 行
- 3
- Min
- 5
- Max
- 22
- 平均
- 12.333333
最短行、最長行、平均の行の長さ、中央値の4つで、すべて文字数で数えられます。ログファイルの実際の幅はどのくらいか、詩が一定のリズムを保っているか、折り返された文書が目標の桁幅を守っているかといった疑問に、テキストをエディタに読み込んで目視することなく答える最も速い方法です。テキストを貼り付ければプロファイルが得られます。
4つの数値が示すこと
各統計値は、テキストについて異なる問いに答えます。行の最小長は短い側を捉えます。
空の区切り行、1語だけの行、編集後に残った断片などです。行の最大長は長い側を捉え、レイアウト、ターミナルペイン、メールクライアント、桁数の予算を前提とするコードレビューツールを壊す原因となるものを検出します。平均は典型的なサイズを示し、同じ文書の2つの版を比較したり、書き直しで実際に文章が引き締まったかを確認したりするのに役立ちます。
そして中央値は中央の行がどこにあるかを示し、少数の極端な行が平均を引っ張る場合に平均より頑健です。最小と最大を合わせて読むとばらつきが分かり、平均と中央値を合わせると偏りが見えます。平均が中央値を大きく上回る場合、ごく少数の非常に長い行がテキストを引き上げているので、それらを見つけたくなるでしょう。
行と長さの数え方
テキストは、LF、CR、CRLFのいずれかの通常の改行で行に分割されるため、Unix、クラシックMac、Windowsのどのシステムのファイルも同じ方法で測定されます。長さは文字数で、文字列が保持するそのままに数えられます。トリムなし、空白の圧縮なし、除外なしです。
2つの段落の間の空行は長さ0の行として数えられ、末尾の空白だけの行はその空白をすべて数えます。それがお送りいただいた内容の正直な幅だからです。平均と中央値は小数点以下6桁に丸められ、どのマシンでも結果が同一になります。
実行間で出力を比較したり、監査証跡に保存したりする際に重要です。拒否される入力は、行がまったくないテキスト、つまり空の文字列だけです。
実際のワークフローでの位置づけ
チームは行の長さの統計を、従来手作業で目視していたチェックに組み込んでいます。
ドキュメントのパイプラインは公開前にコード例が80桁の予算内に収まることを確認し、データのパイプラインは受信した固定長ファイルをプロファイルしてレコード長が突然変わったフィードを拒否し、出版ワークフローはプレーンテキストのニュースレターがテンプレートの想定どおりに折り返されることを確認します。お送りいただいたものは一切保持されません。
テキストは測定後に破棄され、返るのは4つの数値だけです。測定ではなく行を数える場合は行カウンターと、幅を強制する場合は選択した桁に行を折り返すテキストラッパーと組み合わせてください。
活用例
ログやデータフィードの監査
受信した固定長またはCSV形式のファイルをプロファイルし、行の最大長がパーサーが想定するレコードサイズからずれたときに警告します。
桁数の予算の強制
コード例、README、プレーンテキストのメールが、公開または送信前に80桁の制限内に収まっていることを確認します。
文書の草稿の比較
改訂間で行の長さの平均と中央値を追跡し、編集で実際にテキストが引き締まったのか、単に単語が移動しただけなのかを確認します。
よくある質問
何が正確に1行として数えられますか?
テキストはLF、CR、CRLFの改行で分割されます。空行を含むすべての区切りが数えられ、空行は長さ0として測定されます。
測定前に空白は取り除かれますか?
いいえ。 長さは送信されたそのままの文字数で数えられるため、各行の先頭と末尾の空白もその行の長さに含まれます。
平均と中央値はどのように丸められますか?
どちらも小数点以下6桁に丸められ、結果がマシンや実行間で安定し、バイト単位で同一になります。
テキストは保存されますか?
いいえ。 測定後に破棄され、返されるのは4つの統計値だけです。
平均が中央値よりかなり大きいときは何を意味しますか?
ごく一部のとても長い行が、全体の平均を引き上げているということです。中央値はそうした極端な行に左右されにくいので、差が大きいときは長い行を探して確認することをおすすめします。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/line-length-stats \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"short\na somewhat longer line\nmid length"}'const res = await fetch("https://api.kit.forhosting.com/text/line-length-stats", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "short\na somewhat longer line\nmid length"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/line-length-stats",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "short\na somewhat longer line\nmid length"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/line-length-stats", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"short\\na somewhat longer line\\nmid length"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"short\na somewhat longer line\nmid length"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/line-length-stats", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "short\na somewhat longer line\nmid length"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.line_length_stats",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 5 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
行の長さ統計APIは、複数行のテキストを読み取り、1回の呼び出しで各行のサイズを表す4つの数値を返します。自動化すれば、同じコードがエッジ上で1リクエストあたり$0.002で実行されます。
行と長さの数え方
測定すべき意味のあるものがないためで、その場合は明確なinvalid_inputエラーが返され、リクエストは課金されません。
実際のワークフローでの位置づけ
同じコードがブラウザでは無料で、APIでも動作するため、このページにサンプルを貼り付けてチェックの試作ができ、支払いが必要になるのは——1リクエストあたり$0.002——自動化するときだけです。
技術的な質問
料金はいくらですか?
1リクエストあたり$0.002です。このページではブラウザで無料で実行することもできます。
テキストが空の場合はどうなりますか?
空の文字列には行がないため、リクエストはinvalid_inputエラーで失敗し、課金されません。