テキストを行幅に折り返し
行幅を40にすると、長い文が3行になって返ります。どの行も40文字を超えず、単語が途中で切れることもありません。元の改行はそのまま残ります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 幅
- 40
- 行数
- 3
- 最長の単語
- 6
欲張り法で決定的であり、単語を安全に扱い、1 語がご指定の幅より長い場合には正直に処理を拒否します。文字列と整数を送信すれば、折り返されたテキスト、個々の行、そして便利なカウント値が返ってきます。推測も、隠れたハイフネーションも、環境間の差異もありません。
単語を壊さない折り返しが重要な理由
ほとんどの表示面には厳密な桁数の上限があります。ターミナルは 80 桁、プレーンテキストのメールは 72 桁、コードのコメントブロックは 100 桁、印刷された請求書は 40 桁です。
手作業でテキストを流し込むのは退屈でミスが起こりやすく、文字列を N 文字ごとに切るという単純な方法は、単語を真っ二つにしてしまうため可読性を破壊します。行幅へのテキスト折り返し機能は、欲張りアルゴリズムでこの作業を正しく行います。単語を順にたどり、収まる間は現在の行に追加し、次の単語があふれる場合に新しい行を開始します。
単語が分割されることはなく、ハイフネーションが作り出されることもなく、結果は安定しています。同じ入力と同じ幅からは常にバイト単位で同一の出力が得られるため、テスト、生成ドキュメント、テキストを比較するあらゆるパイプラインで安全に使えます。既存の改行は保持され、各入力行は独立して折り返されるため、整形済みの段落も構造を保ちます。
境界での挙動
この契約は、厳密さがお客様を守る場面では厳密です。幅は正の整数で、テキスト中の最長単語と少なくとも同じ長さでなければなりません。お客様の上限に違反する行を黙って出力することはありません。
この拒否は意図的なものです。桁数の予算を密かに超過した折り返し済み文書は下流のレイアウトを壊すため、発生源で検出したいはずです。連続する空白は単一のスペースに畳まれ、空行は空行のまま残り、出力には使用された幅、生成された行数、見つかった最長単語の長さが含まれるため、何が起きたかを正確に記録できます。
アルゴリズムは長さを JavaScript が数える文字数で測定します。これは固定幅のターミナルやコードの文脈に適した単位です。
活用例
コミットメッセージと変更履歴の折り返し
散文の本文を、リポジトリやリリースファイルに書き込む前に、慣例の 72 桁に流し込みます。
プレーンテキストメールの整形
生成されたメールを伝統的な 78 桁の範囲内に収め、どのメールクライアントでもきれいに表示されるようにします。
ターミナルや CLI 出力のレイアウト
フラグや URL を単語の途中で決して分割せず、検出されたターミナル幅にヘルプや説明を折り返します。
よくある質問
既存の改行は保持されますか?
はい。 入力はまず行に分割され、各行が独立して折り返されるため、段落構造は維持されます。
長い単語にハイフンを付けますか?
いいえ。 ハイフネーションが作り出されることはありません。単語は丸ごと保たれ、行は単に早めに折り返されます。
出力は決定的ですか?
はい。 欲張りアルゴリズムには乱数も時計もロケール依存もなく、同一の入力からは常に同一の出力が得られます。
単語が行幅より長い場合はどうなりますか?
その行幅を守れないため、折り返しは行わず、長すぎる単語とその長さを示してお知らせします。URLや製品番号のような長い語があるときは、行幅をその語の長さ以上にしてください。
続いた空白や空行はどうなりますか?
連続した空白は1つの空白にまとめられ、元の文章の空行は空行のまま残ります。段落の区切りを保ったまま、各行だけが指定した幅に収まります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/text/wrap-width \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.","width":40}'const res = await fetch("https://api.kit.forhosting.com/text/wrap-width", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.",
"width": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/wrap-width",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.",
"width": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/wrap-width", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.","width":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.","width":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/wrap-width", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "The quick brown fox jumps over the lazy dog while the sun rises slowly over the quiet hills.",
"width": 40
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.wrap_width",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_mb | 1 |
max_chars | 500000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
テキスト折り返し API は、任意のプレーンテキストと最大行幅を受け取り、その幅を超えず、単語を分割することもない行に再配置したテキストを返します。これは古典的なワードラップアルゴリズムを正しく実装したものです。同じコードがブラウザでは無料で、有料 API の背後でも動作します。
境界での挙動
URL、シリアル番号、長い複合語など、1 語でも幅を超える場合、この機能は問題の単語とその長さを示す明確な invalid_input エラーで拒否します。
パイプラインでの位置づけ
固定幅テキストが生成されるあらゆる場面で利用されています。変更履歴ファイル向けのリリースノートの整形、コミットメッセージ本文の慣例の 72 桁への折り返し、プレーンテキストのメールテンプレートの準備、ターミナルヘルプのレイアウト、生成された PDF や請求書の桁数予算への説明文の収納などです。また、出力には行が配列としても含まれるため、後続の工程では独自の区切り文字で結合したり、番号を付けたり、テキストを再分割せずに 2 つの折り返し結果を比較したりできます。ネットワークもモデルも使わない純粋な解析機能であるため、高速で、1 リクエスト $0.002 と安価で、テストスイートに組み込めるほど決定的です。入力は 1 リクエストあたり 500000 文字に制限されており、現実的な文書は十分にカバーします。それより大きいコーパスは送信前に段落などの自然な境界で分割してください。
技術的な質問
料金はいくらですか?
1 リクエスト $0.002 です。このページのブラウザ上でも無料で実行できます。同じコードが両方の場所で動作します。
幅より長い単語があるとどうなりますか?
その単語と長さを示す invalid_input エラーでリクエストが失敗します。収めるために単語を分割することは決してありません。
どのくらいのテキストを送信できますか?
1 リクエストあたり 500000 文字までです。それより大きい文書は送信前に段落の境界で分割してください。