عكس ترتيب الأسطر
تعود الأسطر «first line» و«second line» و«third line» بالترتيب «third line» و«second line» و«first line»: ينقلب الترتيب ويبقى كل سطر مقروءًا كما هو. وتنتقل الأسطر الفارغة والمسافات البادئة مع النص. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- first line second line third line
- النتيجة
- third line second line first line
- عدد الأسطر
- 3
حين يصل سجل أو قائمة أو لصقة وأحدث مدخل في الأسفل وتحتاج العكس، يكون قلب ترتيب الأسطر أسرع من إعادة كتابة الملف يدوياً. تأخذ هذه القدرة نصاً متعدد الأسطر، وتبقي محتوى كل سطر سليماً — بما في ذلك الأسطر الفارغة والمسافات المحيطة — وتعيد تلك الأسطر من الأخير إلى الأول. وتقبل نهايات يونكس LF وويندوز CRLF وماك الكلاسيكية CR، وتوحّد المخرجات إلى LF، وتعيد سطراً جديداً في النهاية إن كان المدخل يحمل واحداً.
ما الذي يغيّره عكس ترتيب الأسطر فعلاً
عكس الأسطر ليس كعكس سلسلة حرفاً حرفاً. فيبقى كل سطر مقروءاً من اليسار إلى اليمين؛ ولا يُقلب إلا تسلسل الأسطر بحيث يصير السطر الأخير السابق هو الأول. وهذا التمييز مهم للسجلات، وقوائم التغييرات، وتفريغات الصفوف الشبيهة بـ CSV دون ترويسة، ومقاطع الشعر، وأي لصقة يفكر فيها الناس صفوفاً لا بايتات.
وتُعدّ الأسطر الفارغة أسطراً: فإن تركت عمداً فجوة بين كتلتين، تحركت الفجوة مع العكس ولم تُحذف. وتُحفظ المسافات في مقدمة السطر ومؤخرته كي يبقى الإزاحة والأعمدة المبطنة. ولا تفرز الأداة أبجدياً ولا تزيل التكرار ولا تقتطع ولا تعيد التفاف النص؛ إنما تعيد الترتيب فقط.
ولأن العمل منطق تحليل محلي نقي، ينتج المدخل نفسه دوماً المخرَج نفسه، بلا نموذج ولا استدعاء شبكي ولا جدول محلي معني بالأمر. وهذا يجعلها آمنة للتجهيزات، والاختبارات المرجعية، وخطوات التنظيف المؤتمتة التي يجب ألا تنحرف بين التشغيلات.
نهايات الأسطر، والأسطر الجديدة الختامية، والمدخل الفارغ
نادراً ما يستعمل النص الواقعي نمط سطر جديد واحداً. فالمحررات وإعادة توجيه الصدفة وعملاء البريد تمزج LF و CRLF وأحياناً CR مجرداً. وعند الإدخال تقسم هذه القدرة على أي من تلك التتابعات كي تُعكس التفريغات المختلطة بصورة صحيحة.
وتستعمل النتيجة المعاد ضمها LF بين الأسطر لتمثيل ثابت قابل للنقل عبر المنصات. وإن انتهى النص الأصلي بسطر جديد، انتهت النتيجة بسطر جديد كذلك؛ وإن لم ينتهِ، فلا تنتهي النتيجة به — كي تحفظ الأدوات التي تعدّ السطر الجديد الختامي تفصيلاً في شكل الملف ذلك الشكل. وتمنع هذه القاعدة العمليات الصامتة اللاغية في المهام التي تمرر أجساماً فارغة سهواً بعد تنزيل فاشل أو توسيع قالب فارغ.
وتُقيّد اللصقات الضخمة جداً بحد للأحرف كي يبقى استعمال الذاكرة متوقعاً على عامل الحافة وفي المتصفح.
أين يقع عكس ترتيب الأسطر في سير العمل الواقعي
يعكس مهندسو الدعم ذيول السجلات كي يجلس أحدث إطار مكدس في الأعلى قبل اللصق في تذكرة. ويعكس الكتّاب مخططات المسودات حين يُلتقط عصف ذهني من الأسفل إلى الأعلى ويجب أن تُقرأ البنية المنشورة من الأعلى إلى الأسفل. ويقلب ممارسو البيانات تصديراً صغيراً متعدد الأسطر قبل أداة تفترض الصفوف الأحدث أولاً.
ويولّد المطورون تجهيزات متوقعة لاختبارات تؤكد ترتيب الأسطر بعد تحويل. وتبلّغ الاستجابة عن النص المعكوس، وكم سطراً عولج، وهل أُعيد سطر جديد ختامي — وهي بيانات وصفية كافية لتأكيد السلوك في الفحوص المؤتمتة دون إعادة تحليل الجسم. أدرج الاستدعاء في نص صدفة، أو خطوة تكامل مستمر، أو ماكرو مكتب مساعدة: في أي مكان يفتح فيه الناس اليوم محرراً ويسحبون السطر الأخير إلى الأعلى.
ويبقي عمل التحليل من الطبقة A زمن الاستجابة منخفضاً ويزيل الحاجة إلى حاوية أو نموذج لغوي في كل طلب.
حالات الاستخدام
لصق السجل بالأحدث أولاً
اقلب سجلاً زمنياً كي تظهر أحدث الأحداث أولاً قبل مشاركة مقتطف دعم أو ملاحظة حادثة.
إعادة ترتيب المخطط والقائمة
حوّل قائمة عصف ذهني من الأسفل للأعلى إلى مخطط من الأعلى للأسفل دون إعادة كتابة كل نقطة يدوياً.
توليد تجهيزات الاختبار
أنتج تجهيزات معكوسة متعددة الأسطر حتمية لاختبارات الوحدة التي تؤكد ترتيب الصفوف بعد تحويل.
الأسئلة الشائعة
هل يعكس الأحرف داخل كل سطر؟
لا. لا يتغير إلا ترتيب الأسطر. ويبقى النص داخل السطر من اليسار إلى اليمين تماماً كما قُدّم.
ماذا يحدث للأسطر الفارغة؟
الأسطر الفارغة أسطر حقيقية وتتحرك مع العكس. ولا تُحذف ولا تُدمج.
أي نهايات أسطر مقبولة؟
LF و CRLF و CR عند الإدخال. وتضم المخرجات الأسطر بـ LF وتعيد سطراً جديداً ختامياً فقط إن كان المدخل يحمل واحداً.
ماذا لو كان النص فارغاً؟
ويفشل النص الناقص أو غير النصي كذلك. ولا يُحاسب فشل التحقق.
هل يبقى فاصل السطر في نهاية النص؟
نعم، إذا انتهى نصك بفاصل سطر تنتهي النتيجة به أيضًا، وإن لم ينتهِ به فلن تنتهي به. وتُوصل الأسطر بنهاية سطر موحدة حتى لو كان الأصل يستخدم نهايات Windows.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/reverse-lines \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"first line\nsecond line\nthird line"}'const res = await fetch("https://api.kit.forhosting.com/str/reverse-lines", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "first line\nsecond line\nthird line"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/reverse-lines",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "first line\nsecond line\nthird line"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/reverse-lines", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"first line\\nsecond line\\nthird line"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"first line\nsecond line\nthird line"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/reverse-lines", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "first line\nsecond line\nthird line"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.reverse_lines",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
ويُرفض المدخل الفارغ بخطأ invalid_input كي تفشل المسارات فشلاً معلَناً بدل اختراع نجاح فارغ. والمسار الحتمي ذاته يشغّل نموذج المتصفح المجاني والواجهة البرمجية بسعر $0.002 لكل طلب ناجح.
نهايات الأسطر، والأسطر الجديدة الختامية، والمدخل الفارغ
وتفشل السلسلة الفارغة أو حقل النص الناقص أو النص غير النصي فوراً بخطأ invalid_input ورسالة واضحة. استعمل النموذج المجاني للقلبات العابرة؛ وأوصِل الواجهة البرمجية حين يحتاج مسار برمجي العقد ذاته في كل مرة.
أين يقع عكس ترتيب الأسطر في سير العمل الواقعي
ولأن استدعاءات الواجهة البرمجية الناجحة لا تكلف إلا $0.002 ولا يُحاسب فشل التحقق، يمكنك اختبار حمولات فارغة أو مشوهة دون استنزاف الرصيد المدفوع مسبقاً.
أسئلة تقنية
كم تكلف الواجهة البرمجية؟
$0.002 لكل طلب ناجح. أداة المتصفح مجانية. ولا يُحاسب الإدخال غير الصالح.