指定幅で文字列を中央揃え
指定幅で文字列を中央揃えにすると、選択した列幅の中で各行が個別に整形されます。左右に通常の空白を追加し、空行を保持したまま、バナー、端末、README、レポートなどへコピーしやすい長方形のテキストブロックを返します。必要な空白が奇数の場合は、余った1文字分を右側に置きます。文言を切り詰めたり書き換えたりすることはありません。指定幅が最長行より狭い場合は入力エラーを返すため、内容が意図せず失われることもありません。
無料で実行
すべての行が収まる幅を指定します
まず、意図的な空行や既存の空白も含め、表示したい形のままテキストを入力してください。次に、出力する各行の合計文字幅を指定します。この処理は空白を追加するだけで、折り返し、短縮、切り取り、置換は行わないため、幅は最長行以上でなければなりません。十分に大きな幅なら左右に見やすい余白ができ、最長行と同じ幅ならその行は変更されません。文字数はUnicodeのコードポイントで数えるため、絵文字などの補助文字もUTF-16の2単位ではなく1文字として扱われます。ただし、画面上の見た目の幅はフォントや端末に依存します。タブ、結合文字、全角文字などは異なる表示幅になる場合があります。バナーやコンソールを安定して整えるには、等幅フォントを使用し、タブを事前に空白へ置き換え、配置先の列幅に合わせてください。収まらない行がある場合は、見えない切り取りを期待せず、幅を広げるか元の文章を明示的に編集してください。
左右への空白の配分を確認します
空白数は入力行ごとに個別に計算されます。指定幅からその行の文字数を引き、利用できる空白の半分を左側に、残りを右側に配置します。空白数が偶数なら左右は同数です。奇数なら右側に空白が1つ多くなります。この固定規則により、何度実行しても同じ結果になり、任意のずれを生じさせずに行を揃えられます。行頭や行末にすでに存在する空白も文字数に含まれ、そのまま保持されます。Windows、macOS、Unixの改行を認識し、返されるブロックでは行間の改行を統一します。空行も削除されず、指定幅と同じ数の空白だけで構成される行になります。そのため、枠で囲んだお知らせや、意図的に間隔を空けた見出しにも利用できます。すべての出力行が指定幅に正確に揃うので、ASCIIの枠内に置いたり、ソースコードのコメントへコピーしたり、別の固定幅コンテンツと組み合わせたりする際にも、行ごとの余白を手作業で計算する必要がありません。
プレーンテキストの配置で安全に使用します
最終的な場所へ貼り付ける前に、返された各行をご確認ください。特に、貼り付け先が連続する空白をまとめる仕様かどうかが重要です。プレーンテキストファイル、コードブロック、端末出力、整形済みのメール領域では通常、追加した空白が保持されます。一方、一般的なHTML段落や多くのリッチテキストエディターでは、連続する空白が1つにまとめられる場合があります。そのような環境では、整形済みブロックなど、空白を保持する領域をご使用ください。結果には、結合済みのテキストと個別の行の配列が含まれるため、連携処理ではブロック全体のコピーと行単位の処理を選べます。指定幅と行数も返されるので、スクリプトによるレイアウト確認にも役立ちます。この処理は入力テキストだけを対象とする決定的な処理であり、ネットワークへの接続、乱数の生成、時刻情報の追加は行いません。有料経路で実行する場合に表示される基本料金は$0.002で、対応するブラウザー実行でも同じ純粋な変換を使用します。幅不足やフィールド型の誤りは、入力を修正してから再実行してください。
活用例
コンソールや端末のバナー
枠や周辺の出力を追加する前に、タイトル、状態メッセージ、区切り見出しを既知のパネル幅の中央へ配置します。
READMEやコードブロックの見出し
Markdownのコードブロック、ソースコメント、変更履歴、空白を保持する文書向けに、左右の整った見出しを作成します。
固定幅レポートのレイアウト
レポート、チケット、領収書、テキストテンプレートの複数行ラベルや表紙文を、一定幅の列に揃えます。
よくある質問
空白を左右に均等に分けられない場合はどうなりますか?
左側を少ない半分、右側を1つ多い半分にします。すべての行に同じ固定規則が適用されます。
指定幅を超える行は自動的に折り返されますか?
いいえ。幅が最長行より狭い場合は入力エラーとなり、意図しない折り返しやデータの欠落を防ぎます。
空行は保持されますか?
はい。各空行は、指定した幅と同じ数の空白を含む行として出力されます。
貼り付けた後も空白は表示されますか?
プレーンテキストでは保持されますが、HTMLやリッチテキストでは縮約される場合があります。その場合は整形済み領域をご使用ください。
既存の行頭や行末の空白も保持されますか?
はい。既存の空白は行の一部として数えられ、指定幅に達するために必要な分だけが追加されます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/center-text \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"QUARTERLY REPORT\nRevenue overview","width":24}'const res = await fetch("https://api.kit.forhosting.com/str/center-text", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "QUARTERLY REPORT\nRevenue overview",
"width": 24
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/center-text",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "QUARTERLY REPORT\nRevenue overview",
"width": 24
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/center-text", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"QUARTERLY REPORT\\nRevenue overview","width":24}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"QUARTERLY REPORT\nRevenue overview","width":24}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/center-text", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "QUARTERLY REPORT\nRevenue overview",
"width": 24
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.center_text",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |