三点リーダーと3つのピリオドを正規化
文章がエディター、コンテンツ管理システム、コピーされた文書、出版ツールを経由すると、三点リーダーの表記が混在しがちです。この機能は、ほかの句読点を変更せずに省略記号だけを統一します。連続する3つのピリオドを1文字のUnicode三点リーダーへ変換するか、三点リーダーを3つの通常のピリオドへ展開するかをお選びいただけます。変換結果は常に一定で、周囲の単語と空白をそのまま保ち、置換回数も返します。単発の校正にも、繰り返し実行する文章処理にも適しています。
無料で実行
出力先に合う三点リーダー形式をお選びください
省略を表す方法には、3つのピリオド <code>...</code> と、1文字のUnicode三点リーダー <code>…</code> があります。段落内では似て見えますが、データとしては異なります。検索機能、文字数制限、組版規則、後続の検証処理では別の文字として扱われる場合があります。出版物、デザインシステム、スタイルガイドでコンパクトなUnicode文字が必要な場合は <code>periods_to_ellipsis</code> をお選びください。プレーンテキスト、旧式システム、ソースコード規約、制限付き文字セットでASCII記号が必要な場合は <code>ellipsis_to_periods</code> をお選びください。既定値は前者です。選択した方向は、同じ行や複数行にある複数の該当箇所を含め、入力全文に適用されます。単語、空白、引用符、対象外の句読点は変わりません。そのため、一般的な文章校正ではなく、範囲が明確で予測可能な処理としてご利用いただけます。
置換対象を正確にご確認いただけます
<code>periods_to_ellipsis</code> モードでは、走査中に見つかった連続する3つのピリオドを、重複しない単位ごとに三点リーダーへ変換します。したがって、6つのピリオドは2文字の三点リーダーになり、1つまたは2つのピリオドは変わりません。<code>ellipsis_to_periods</code> モードでは、Unicode三点リーダーをすべて3つのピリオドへ変換します。この機能は、その記号がためらい、省略引用、点線、入力ミスのどれを表すかを推測せず、ご指定の文字変換だけを実行します。言語や編集方針によって空白の規則が異なるため、記号の前後に空白を追加したり削除したりもしません。応答には変換済みの文章、正式なモード名、置換回数が含まれます。置換回数が0でも正常な結果であり、元の文章に対象形式がなかったことを示します。全文を比較せずに変更されたレコードを判定する際にも、この回数をご利用いただけます。
出版工程で安全に正規化できます
短い文章では、元のテキストを貼り付けて方向を選び、レイアウトへ配置する前に返された文章をご確認ください。自動処理では、インポート直後またはエクスポート直前に同じ操作を実行し、各文書が明確な正規化工程を通るようにします。決まった段階で指定形式を適用すると、エディターやレンダラーが異なる表記を再び混在させるのを防げます。同じ方向の変換は冪等です。<code>periods_to_ellipsis</code> の結果に同じ処理を再実行しても変化せず、<code>ellipsis_to_periods</code> も同様です。ただし、後から方向を逆にすると、以前の処理で作られた記号だけでなく、該当する記号がすべて変換されます。プレーンテキストには由来が保存されないためです。このアルゴリズムはネットワーク、モデル、乱数、時刻を使用せず、同一の入力とモードから常に同一の結果を返します。手作業にはブラウザーが便利で、APIは1回 $0.002 で出版、移行、修正、取り込みの一括処理にご利用いただけます。
活用例
出版スタイルガイドを適用
組版と校正の前に、混在する3つのピリオドを専用の三点リーダーへ変換します。
ASCII限定システム向けに準備
旧式または制限付きの処理系へ送る前に、Unicode三点リーダーを通常のピリオドへ展開します。
取り込んだコンテンツを統一
エディター、文書、フィード、管理システム由来のレコードへ一貫した規則を適用します。
よくある質問
この機能の料金はいくらですか?
APIは1回 $0.002 です。このページではブラウザー版もご利用いただけます。
三点リーダー前後の空白も変わりますか?
いいえ。選択された記号だけを変更し、周囲の空白は完全に保持します。
ピリオドが6つ続く場合はどうなりますか?
ピリオドから三点リーダーへのモードでは、重複しない走査により2文字へ変換されます。
単独のピリオドや小数も変わりますか?
1つまたは2つのピリオドは変わりません。既定方向では3つ連続する場合だけが対象です。
同じ変換を2回実行しても安全ですか?
はい。正規化後の出力にはそのモードの変換元パターンがないため、2回目の置換数は0になります。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/str/normalize-ellipsis \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Wait... is that all?"}'const res = await fetch("https://api.kit.forhosting.com/str/normalize-ellipsis", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Wait... is that all?"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/normalize-ellipsis",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Wait... is that all?"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/normalize-ellipsis", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Wait... is that all?"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Wait... is that all?"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/normalize-ellipsis", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"text": "Wait... is that all?"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.normalize_ellipsis",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |