最長行を検出
テキストを貼り付けると、最も長い行が分かります。3行の例では2行目が29文字で最長です。八十桁や百二十桁のコード規約の確認、表の列幅の計画に役立ち、ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- テキスト
- short this is the longest line here mid
- 最長の行
- this is the longest line here
- 長さ
- 29
- 行番号
- 2
- 総行数
- 3
最長行を見つけるのは小さな計測ですが、製品としての役割は明確です。複数行のテキストを貼り付けると、どの行が文字数として最も長く、正確に何文字かが分かります。開発者はその数値で八十列や百二十列のスタイルガイドを適用し、データ担当者は表やCSVプレビューの幅決めに使い、運用者は折り返しや切り捨てが起きる端末へログを流す前に確認します。本機能は復帰、改行、Windows形式のCRLFペアで分割し、ブラウザとWorkerアイソレートが既に用いるのと同じJavaScript文字列長で各行を測り、同点時は最初の最大を返すためテストで安定します。
最長行の長さの意味と行の測り方
最長行の報告は、行数や文書の単語数を数えるのとは異なる検索意図に応えます。幅を気にする人は「最長行を探す」「最大行長」「最長行の文字数」などと検索します。本ツールは行を行終端記号の間のセグメントと定義します。
終端は復帰、改行、または復帰+改行のペアを単一の区切りとして扱い、CRLFファイルが二重分割されないようにします。分割後、各セグメントはJavaScriptの文字列長で測り、ブラウザのテキストエリアやKITの多くの文字列ユーティリティと同じくUTF-16コード単位を数えます。
通常のASCIIやLatin-1は1、多くの絵文字や稀な記号は2コード単位になることがあり、ここにある他の無料テキストツールと同じ契約です。スタイル制限、表の列計画、端末の整形幅が目的ならこの最長行計算機を選んでください。行数合計や単語数、バイナリのバイトサイズだけが必要なときは別のランディングを使ってください。
最長行を調べると役立つ場面
宿題のスタイル確認、ペーストビン監査、README幅の見直し、端末整形の素早い確認に、各言語で分割と最大値のワンライナーを書かずに、ブラウザ内の無料の最長行ツールを呼び出してください。別の流れは表プレビューの寸法取りで、CSVやmarkdownの行を入れ、セル行の最大幅を知り、横スクロールを避ける列レイアウトを選びます。
次の段がより広いテキスト統計なら行数や単語カウンタと組み合わせつつ、最大行長の検索意図が総行数や文書全体の単語指標と混ざらないよう、最長行は独立したランディングに保ってください。タブの表示列幅、折り返し、フォント指標は本文字長契約の外の表示問題です。
単一行ASCII、最初の行が勝つ同点長、CRLF終端のフィクスチャを固定し、リファクタが勝者を静かに変えないようにします。
活用例
コードスタイルと列予算の確認
開発者はレビュー前にソースや差分を貼り、八十列・百二十列のスタイル規則に対する最長行の長さを確認します。
表とCSVプレビューのレイアウト
分析担当はサンプル表の最広行を測り、UI列とエクスポートプレビューが予期せぬ横方向のはみ出しを避けられるようにします。
端末とログ貼り付けの整形
運用者は折り返しや切り捨てが起きる端末へ流す前に、サポート貼り付けやログ抜粋の最大行幅を確認します。
よくある質問
textが空の場合はどうなりますか?
長さゼロの文字列は拒否され課金されません。空白のみのテキストは許可され計測されます。
CRLFとLFはどう扱われますか?
復帰、改行、CRLFペアはすべて行区切りとして扱われます。CRLFは単一の区切りとして数え、Windows形式ファイルが二重分割されません。
同じ長さの行が2つあるときはどうなりますか?
上にある行が選ばれます。最初に最大の長さに達した行がそのまま残るので、同じテキストを何度調べても行番号は変わりません。
絵文字は1文字として数えられますか?
いつもそうとは限りません。ブラウザの入力欄と同じ数え方なので、普通の文字は1ですが、多くの絵文字や珍しい記号は2と数えられ、見た目より長く測られることがあります。
最後に空の行が数えられるのはなぜですか?
テキストが改行で終わっていると、その後ろの空の部分も1行として数えます。多くのエディタがファイルの最後に空の行を表示するのと同じ考え方です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/longest-line \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"short\nthis is the longest line here\nmid"}'const res = await fetch("https://api.kit.forhosting.com/str/longest-line", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "short\nthis is the longest line here\nmid"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/longest-line",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "short\nthis is the longest line here\nmid"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/longest-line", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"short\\nthis is the longest line here\\nmid"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"short\nthis is the longest line here\nmid"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/longest-line", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "short\nthis is the longest line here\nmid"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.longest_line",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
空入力はinvalid_inputで拒否され、パイプラインが長さゼロの黙ったスキャンを保存しません。無料のブラウザツールはお客様の端末上で動作し、サーバーが同じ契約を一括で必要とする場合、プリペイドAPIは成功したアイテムごとに$0.002を課金します。
最長行の長さの意味と行の測り方
勝者の行は、これまでの最大より厳密に長い最初のセグメントであり、同じ長さの行が複数ある場合は最上段が報告されline_numberは安定します。total_linesは分割後のセグメント数で、テキストが改行で終わる場合の末尾の空セグメントも含み、多くのエディタがファイル末尾に余分な空行を見せる様子と一致します。character_countは行ごとの最大の横に置くための原文全体の長さです。
入力契約、空入力の拒否、応答フィールドの読み方
通常のソース、ログ、下書きは余裕をもって収まります。本製品はテキストユーティリティであり、大容量ファイル倉庫ではありません。必須の文字列フィールドtextに、走査したい空でないサンプルを入れたJSON本体を送ってください。古いクライアントやフォーム生成器がそれらの名前を使う場合、別名input、value、s、content、bodyも受け付けます。textの欠落、非文字列、長さゼロの文字列はいずれも問題を名指しするメッセージ付きでinvalid_inputを上げ、プリペイドAPIでは課金されません。空白のみのテキストは許可され、空入力ではなく、単一の空行は長さゼロでその空白セグメントをlongest_lineとして正しく報告します。柔らかい文字数上限を超える極端に大きなペイロードは拒否され、Workerアイソレートの応答性を保ちます。成功時の応答には、勝者行の正確な文字としてのlongest_line、その行の文字長としてのlength、行ジャンプUI向けの1始まりindexであるline_number、セグメント数のtotal_lines、貼り付け全体のcharacter_count、ペイロードを再保存せず前後表を出せるようエコーするoriginal、下流が形状を嗅ぎ分けずに分岐できるよう常にlongest_lineに設定されたmethodが含まれます。リンター風ゲートが最大幅だけ必要ならlengthを、レビュー担当がどの行が予算を破ったかを見るならlongest_lineを、エディタが違反箇所へスクロールするならline_numberを使ってください。ペイロードはWorkerアイソレート向けの通常のメッセージ・文書サイズに保ち、数メガバイトのダンプは避けてください。
APIの使い方、料金、ワークフロー、実用上の制限
CMS、コンテンツパイプライン、QAハーネス、モバイルクライアントが残高下で同じ契約を必要とするときは、成功アイテムごとに$0.002のKITプリペイドAPIを使い、エンジンが拒否した検証失敗は残高を消費しません。典型的な流れはソースを貼り、八十列または百二十列の方針に対してlengthを読み、コミット前に報告されたlongest_lineを短くします。第三の流れは決定的フィクスチャを作り、既知の複数行サンプルを入れ、lengthとline_numberを固定し、将来のリファクタがCRLFや末尾改行を誤るとCIを失敗させます。SDKを出す作者は必須フィールドをtextのみと文書化し、複数行の成功例と空文字エラー例を示して契約の両面を見せてください。
技術的な質問
このツールでテキストの最長行をどう見つけますか?
空でない文字列をtextに入れたJSONを送ってください。応答はlongest_line、length、line_number、total_lines、character_countを返します。
2行が同じ最大長の場合は?
最初(最上段)の行が勝ちます。line_numberはその最初の最大を指し、テストとUIで結果が安定します。
最長行ファインダーは無料ですか?
ブラウザツールはお客様の端末上で無料です。API呼び出しは成功アイテムごとに$0.002のKITプリペイド残高を使い、検証失敗は課金されません。