قص المسافات من كل سطر
نظّف طرفي كل سطر دفعة واحدة: تفقد ثلاثة أسطر محشوة بالمسافات، أحدها بعلامات جدولة، 10 محارف زائدة لتصبح hello وworld وfoo bar، مع بقاء المسافة داخل foo bar. وتبقى الأسطر الفارغة في مكانها. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- hello world foo bar
- الإدخال
- hello world foo bar
- النص
- hello world foo bar
- عدد الأسطر
- 3
- الأسطر
- hello, world, foo bar
أداة قص المسافات الواعية بالأسطر تحوّل لصقًا متعدد الأسطر فوضويًا إلى حواف نظيفة دون طيّ الكلمات داخل كل سطر. أدخل أي سلسلة غير فارغة—سجلات، مقتطفات شفرة، ملفات TSV، أو نثر منسوخ من مستند—فتُطبّع الأداة نهايات الأسطر، وتقسم عند فواصل السطر، وتُجري قصًا كاملًا لكل سطر فتختفي المسافات الأولى وعلامات الجدولة الأخيرة وضوضاء المسافة البادئة المختلطة بينما يبقى التباعد الداخلي سليمًا. يحتاج المحررون ونصوص ضمان الجودة ومراجعو الواجبات ومعالجات ETL المسبقة إلى القاعدة نفسها لكل سطر دون فتح بحث واستبدال كامل من بيئة تطوير.
معنى القص لكل سطر ولماذا يختلف عن String.trim
توفر معظم اللغات قصًا واحدًا يزيل المسافات فقط من بداية ونهاية السلسلة كاملة. ذلك يترك الأسطر الوسطى ذات المسافة البادئة دون مساس، وهو بالضبط ما يحدث عند لصق كتلة من أسطر السجل أو عينة شفرة بمسافات نهائية عرضية أو تصدير جدول متعدد الصفوف بخلايا مبطّنة. هذه الأداة تقص كل سطر على حدة: بعد تطبيع فواصل Windows CRLF وCR القديم إلى شكل LF واحد، يُقسَّم النص على LF، ويمر كل مقطع بقص مسافات واعٍ بـ Unicode، ثم تُعاد وصل المقاطع بـ LF.
تبقى المسافات الداخلية بين الكلمات؛ تُنظَّف حواف كل سطر فقط. تصبح الأسطر الفارغة بين المحتوى سلاسل فارغة بعد القص، فتظل البنية التي استخدمت فواصل بيضاء ظاهرة كأسطر فارغة بدل أن تختفي. تبقى الأسطر الفارغة في بداية ونهاية اللصق الأصلي كأسطر فارغة بعد التقسيم لأن الخوارزمية لا تحذف الأسطر—بل تقصها فقط.
يطابق التصميم أوامر المحرر اليومية مثل «قص المسافات النهائية» على تحديد، ويزيل أيضًا الحشو الأولي الذي يظهر كثيرًا عند النسخ من قوائم ذات مسافة بادئة أو واجهات دردشة.
نصائح عملية وحدود وعمليات بحث ذات صلة
استخدم هذه القدرة عندما تكون نية البحث قص مسافات الأسطر أو إزالة الهوامش الأولى والأخيرة متعددة الأسطر أو تنظيف لصق بمسافة بادئة عبر الإنترنت. راعِ المسافة البادئة المقصودة فقط إن احتجت مسافات أولى لتخطيط الشفرة—هذه الأداة تزيلها؛ وإن أردت تنظيفًا نهائيًا فقط مع حفظ المسافة البادئة فأنت بحاجة لسياسة أخرى أو تمريرة مسبقة. مصدر HTML وMarkdown يقصان كل سطر خام من السلسلة المرسلة؛ أزل الوسوم أولًا إن اهتممت بالنص المعروض لا بالترميز.
هذه الصفحة ليست String.trim كامل الوثيقة فقط، وليست حاذف أسطر فارغة، وليست طاوي مسافات يحوّل المسافات المزدوجة إلى واحدة، وليست منظّف خلايا CSV واعيًا بالمحدد، وليست معيد كتابة بالذكاء الاصطناعي. عند تعليم الطلاب أو تأهيل المراجعين، اعرض العينة نفسها قبل وبعد ليروا أن حواف الأسطر فقط تتغير وأن التباعد داخل الكلمات يبقى كما هو.
حالات الاستخدام
تنظيف لصق السجلات والوحدة للبطاقات
يلصق المطوّرون سجلات متعددة الأسطر بمسافات أولى عرضية وعلامات جدولة نهائية؛ تعيد الأداة أسطرًا محاذاة جاهزة لمتتبعات الأخطاء والفروق.
تطبيع تفريغات الواجبات والمقالات
يزيل المعلّمون ونصوص LMS حشو الحواف من كل سطر مُرسل قبل أن ترى مسارات عدّ الكلمات أو الانتحال النص.
اختبارات وحدة لمعالجات النص المسبقة
أنشئ تجهيزات متعددة الأسطر مبطّنة معروفة ورفض إدخال فارغ للمحررات ومراحل ETL ومسارات markdown.
الأسئلة الشائعة
هل يزيل المسافات بين الكلمات؟
لا. يُزال فقط الفراغ في بداية ونهاية كل سطر. تُحفظ المسافات وعلامات الجدولة داخل السطر.
ماذا يحدث عند إدخال فارغ؟
قدّم سلسلة غير فارغة فيها حرف واحد على الأقل ليس مسافة.
هل تُحذف الأسطر الفارغة؟
لا. تبقى الأسطر الفارغة أسطرًا فارغة بعد القص. لا تحذف الأداة الأسطر ولا تدمجها؛ تقص حواف كل سطر فقط.
كيف تُعالج نهايات أسطر Windows؟
يُطبَّع CRLF وCR المنفرد إلى LF قبل التقسيم حتى ينتج نفس اللصق نفس النتيجة على كل منصة.
هل تبقى المسافات البادئة في الكود؟
لا. تُحذف المسافات في بداية السطر أيضًا، فتختفي كل إزاحة. وإذا أردت الإبقاء على الإزاحة وحذف المسافات في نهاية السطر فقط، فهذه الأداة ليست المناسبة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/trim-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":" hello \n\tworld\t\n foo bar "}'const res = await fetch("https://api.kit.forhosting.com/str/trim-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": " hello \n\tworld\t\n foo bar "
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/trim-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": " hello \n\tworld\t\n foo bar "
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/trim-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":" hello \\n\\tworld\\t\\n foo bar "}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":" hello \n\tworld\t\n foo bar "}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/trim-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": " hello \n\tworld\t\n foo bar "
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.trim_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_chars | 100000 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
يُرفض الإدخال الفارغ أو المكوّن من مسافات فقط بخطأ invalid_input واضح حتى لا تعامل الأتمتة لصقًا فارغًا على أنه تنظيف ناجح. المسار منطق سلاسل حتمي خالص—بلا شبكة، بلا بذور عشوائية، بلا اعتماد على الساعة—لذلك يُعيد مُشغّل المتصفح المجاني وواجهة API المدفوعة مسبقًا نفس JSON في كل استدعاء.
معنى القص لكل سطر ولماذا يختلف عن String.trim
الإدخال كله فارغًا أو مسافات فقط خطأ صارم: لا وثيقة منظَّفة ذات معنى لإرجاعها، ويجب أن يعاملها المستدعون كـ invalid_input لا كنجاح بصفر أسطر.
كيفية استدعاء API وما تحتويه الاستجابة
فضّل إرسال الجسم متعدد الأسطر خامًا بدل طي الفواصل مسبقًا إن أردت دلالات حقيقية لكل سطر؛ طي الكل في سطر واحد يقص فقط الحواف الخارجية لمقطع واحد. أرسل جسم JSON بحقل string إلزامي text (أسماء بديلة input وvalue وstring وs وcontent وbody). يجب أن تكون القيمة سلسلة غير فارغة بعد قص المسافات العام وألا تتجاوز مئة ألف حرف حتى لا تستنزف طلب واحد ذاكرة Worker أو المتصفح بلصق ضخم. عند النجاح تعيد الاستجابة input كالسلسلة الأصلية المرسلة، وtext كنتيجة القص لكل سطر موصولة بـ LF، وline_count كعدد الأسطر بعد التقسيم (بما فيها الفارغة)، وlines كمصفوفة مرتبة لسلاسل الأسطر المقصوصة، وchars_before وchars_after كأطوال السلسلتين الأصلية والمنظَّفة، وchars_removed كعدد الأحرف التي أزالها القص إجمالًا، وmessage كملخص إنجليزي قصير يبلغ بعدد الأسطر والأحرف المزالة. فشل التحقق—غياب text أو قيمة غير string أو حمولة مفرطة أو محتوى فارغ بعد القص العام—يعيد invalid_input ولا يُحسب أبدًا. التسعير مبلغ ثابت $0.002 لكل طلب ناجح بوحدة item وسعر وحدوي هامشي صفر. عند الدمج، أكّد على text أو lines للمحتوى المنظَّف، وقارن اختياريًا chars_removed لفحوصات الانحدار، وعامل invalid_input كخطأ عميل في إرسال النماذج الفارغة لا كحدث فوترة.
نصائح عملية وحدود وعمليات بحث ذات صلة
فحوصات الذهاب والإياب للاختبارات سهلة: أدخل سطرين مبطّنين وتوقع تلك الكلمات محاذاة لليسار بلا مسافات نهائية؛ أدخل سطرًا ثالثًا بمسافة جدولة وتأكد من اختفاء الجدولة مع بقاء المسافات المزدوجة الداخلية في عبارة؛ أرسل عمدًا سلسلة فارغة أو مسافات فقط لتأكيد invalid_input والرسالة التي تطلب سلسلة غير فارغة. فضّل data.clean_csv عندما تكون الحمولة CSV جدوليًا مع إصلاحات ترميز؛ وفضّل str.paragraph_count عندما تحتاج مجاميع فقرات بفواصل أسطر فارغة؛ وفضّل هذه القدرة عندما فصل البشر الأسطر مسبقًا وتحتاج فقط حوافًا نظيفة لكل منها. المهام الفاشلة التي تعيد invalid_input لا تستهلك الرصيد المدفوع مسبقًا، مما يبقي تحقق النماذج واختبارات CI السلبية رخيصة.
أسئلة تقنية
هل أداة قص مسافات الأسطر مجانية؟
أداة المتصفح مجانية وتعمل محليًا. تستخدم استدعاءات API رصيد KIT المدفوع مسبقًا بمبلغ $0.002 لكل طلب ناجح؛ لا تُحسب المهام الفاشلة أبدًا.