لفّ النص إلى عرض سطر ثابت
اضبط العرض على 40 فتعود الجملة الطويلة في 3 أسطر، لا يتجاوز أي منها 40 محرفًا ولا تُقطع أي كلمة من منتصفها. وتبقى فواصل الأسطر التي كتبتها في مكانها. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- العرض
- 40
- عدد الأسطر
- 3
- أطول كلمة
- 6
إنها خوارزمية لفّ الكلمات الكلاسيكية منفَّذة على النحو الصحيح: شرهة وحتمية وتحترم الكلمات، وصادقة بما يكفي لرفض المهمة عندما تكون كلمة واحدة أطول من العرض المطلوب. ترسل سلسلة نصية وعددًا صحيحًا، فتستلم النص الملفوف والأسطر المنفردة وبعض الإحصاءات المفيدة.
لماذا يهم اللفّ الذي يحترم الكلمات
تفرض معظم أسطح العرض حدًّا صارمًا للأعمدة: طرفية بثمانين عمودًا، وبريد إلكتروني بنص عادي باثنين وسبعين، وكتلة تعليقات برمجية بمئة، وفاتورة مطبوعة بأربعين. وإعادة توزيع النص يدويًّا عمل ممل ومعرَّض للخطأ، أما النهج الساذج، أي تقطيع السلسلة كل عدد من الأحرف، فيدمر قابلية القراءة لأنه يشطر الكلمات نصفين. تنجز قدرة لفّ النص إلى عرض سطر المهمة بشكل صحيح بخوارزمية شرهة: تسير على الكلمات بالترتيب، وتضيف كل كلمة إلى السطر الحالي ما دامت تتسع، وتفتح سطرًا جديدًا عندما تفيض الكلمة التالية.
وتُحفظ فواصل الأسطر الموجودة، ويُلفّ كل سطر مصدري على حدة، فتحتفظ الفقرات المنسقة مسبقًا ببنيتها.
كيف تتصرف الخوارزمية عند الحدود
العقد صارم حيث تحميك الصرامة. يجب أن يكون العرض عددًا صحيحًا موجبًا وألا يقل عن طول أطول كلمة في النص. تنهار تسلسلات المسافات إلى مسافات مفردة، وتبقى الأسطر الفارغة أسطرًا فارغة، ويُبلغ المخرج عن العرض المستخدم وعدد الأسطر المنتجة وطول أطول كلمة وُجدت، لتسجل بدقة ما حدث.
وتقيس الخوارزمية الطول بالأحرف كما تعدّها JavaScript، وهي الوحدة المناسبة لسياقات الطرفية والشيفرة ذات العرض الثابت.
أين تتموضع في خط المعالجة
تستدعيها الفرق حيثما يُولَّد نص ذو عرض ثابت: عند تنسيق ملاحظات الإصدار لملف سجل التغييرات، ولفّ متون رسائل الالتزام إلى الاثنين وسبعين عمودًا المعتادة، وتجهيز قوالب البريد النصي العادي، وتخطيط مخرجات مساعدة الطرفية، أو إدخال الأوصاف في ميزانية أعمدة ملف PDF أو فاتورة مولدين. وتشغّل الأداة المجانية في هذه الصفحة الوحدة نفسها في متصفحك، فيمكنك ضبط العرض تفاعليًّا ولا تدفع إلا عند أتمتة الاستدعاء. وتقتصر المدخلات على 500000 حرف لكل طلب، وهو ما يغطي بارتياح أي مستند واقعي؛ أما المدونات الأكبر فينبغي تقسيمها عند حدود طبيعية كالفقرات قبل الإرسال.
ولأن المخرج يتضمن الأسطر أيضًا في صورة مصفوفة، تستطيع الخطوات اللاحقة ضمها بفاصل خاص بها أو ترقيمها أو مقارنة لفّين دون إعادة تقسيم النص.
حالات الاستخدام
لفّ رسائل الالتزام وسجلات التغييرات
أعد توزيع المتون النثرية إلى الحد المعتاد البالغ 72 عمودًا قبل كتابتها في مستودع أو ملف إصدار.
تنسيق رسائل البريد النصية العادية
أبقِ رسائل البريد المولدة داخل الغلاف الكلاسيكي البالغ 78 عمودًا لتظهر بشكل نظيف في أي عميل بريد.
تخطيط مخرجات الطرفية وسطر الأوامر
لُفّ المساعدة والأوصاف إلى عرض الطرفية المكتشف دون كسر علم أو عنوان URL في منتصف كلمة أبدًا.
الأسئلة الشائعة
كم تبلغ التكلفة؟
وهي مجانية أيضًا في متصفحك على هذه الصفحة، إذ تعمل الشفرة نفسها في المكانين.
هل تُحفظ فواصل الأسطر الموجودة؟
نعم. يُقسَّم المدخل أولًا إلى أسطر، ويُلفّ كل سطر على حدة، فتبقى بنية الفقرات محفوظة.
هل تصل الكلمات الطويلة بواصلات؟
لا. لا يُختلق الوصل أبدًا؛ تبقى الكلمات كاملة وينكسر السطر قبل ذلك ببساطة.
كم من النص يمكنني إرساله؟
حتى 500000 حرف لكل طلب. قسّم المستندات الأكبر عند حدود الفقرات قبل الإرسال.
ماذا يحدث إذا كانت كلمة أطول من العرض؟
ترفض الأداة اللف وتذكر الكلمة الطويلة وطولها، بدل أن تُخرج سطرًا يتجاوز الحد الذي طلبته. فإذا كان في النص رابط أو رقم تسلسلي طويل، فاجعل العرض مساويًا لطوله على الأقل.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر 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"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 1 |
max_chars | 500000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
تأخذ واجهة برمجة تطبيقات لفّ النص أي نص عادي وحدًّا أقصى لعرض السطر، وتعيد النص موزَّعًا من جديد في أسطر لا تتجاوز ذلك العرض أبدًا ولا تقسم أي كلمة. لا تخمين ولا وصل مخفي ولا مفاجآت بين البيئات، إذ تعمل الشفرة نفسها مجانًا في متصفحك وخلف واجهة API المدفوعة، فتتحقق من النتيجة قبل أن تدفع.
كيف تتصرف الخوارزمية عند الحدود
فإذا تجاوزت كلمة واحدة، كعنوان URL أو رقم تسلسلي أو مركب طويل، العرض المطلوب، رفضت القدرة الطلب بخطأ invalid_input واضح يسمي الكلمة المخالفة وطولها، بدلًا من إصدار سطر ينتهك حدك في صمت. وهذا الرفض متعمد: فالمستند الملفوف الذي يتجاوز ميزانية أعمدته سرًّا يكسر التخطيطات في المراحل اللاحقة، ومن الأفضل اكتشاف ذلك عند المنبع.
أين تتموضع في خط المعالجة
ولأنها قدرة تحليل صرفة بلا شبكة ولا نموذج، فهي سريعة ورخيصة بسعر $0.002 لكل طلب وحتمية بما يكفي لتكون جزءًا من حزمة اختبارات.
أسئلة تقنية
ماذا يحدث إذا كانت كلمة أطول من العرض؟
يفشل الطلب بخطأ invalid_input يسمي الكلمة وطولها. ولا تكسر القدرة أي كلمة لتجعلها تتسع.
هل المخرج حتمي؟
نعم. الخوارزمية الشرهة لا عشوائية فيها ولا ساعة ولا اعتماد على الإعدادات المحلية، فالمدخل المتماثل ينتج دائمًا مخرجًا متماثلًا.