عد الأسطر
النص المكوّن من Hello وسطر فارغ وWorld وفاصل سطر أخير يساوي 4 أسطر: سطران بمحتوى وسطران فارغان. تُعرف نهايات الأسطر في Windows وUnix وأجهزة Mac القديمة، ويُحسب كل فاصل مرة واحدة. مجانية في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- Hello World
- الإجمالي
- 4
- غير فارغة
- 2
- فارغة
- 2
- الأسطر
- 4
عدّ الأسطر أداة صغيرة تحتاج مع ذلك عقدًا واضحًا: ما يُعدّ فاصل سطر، وهل ينشئ سطر جديد أخير سطرًا فارغًا إضافيًا، وكيف تُصنَّف الصفوف ذات المسافات فقط. يقبل عدّاد الأسطر هذا نصًا غير فارغ، ويقسمه عند إرجاع الحامل أو تغذية السطر أو أزواج CRLF، ثم يبلّغ عن إجمالي الأسطر والأسطر غير الفارغة التي تحوي حرفًا واحدًا على الأقل غير مسافة، والأسطر الفارغة التي تكون فارغة أو مسافات وعلامات تبويب فقط بعد القص.
معنى عدّ الأسطر وكيف يُقرَّر الفارغ مقابل غير الفارغ
يجيب عدّ الأسطر عن ثلاثة أسئلة مترابطة يكتبها الناس في البحث: كم سطرًا لهذا النص، وكم منها يحوي محتوى فعليًا، وكم منها فارغ. تعرّف هذه القدرة السطر بأنه مقطع بين منهيّات السطر. المنهيّات هي إرجاع الحامل أو تغذية السطر أو زوج الإرجاع مع التغذية بأسلوب Windows كفاصل واحد حتى لا يُحسب ملف CRLF مرتين.
بعد التقسيم يُصنَّف كل مقطع. السطر غير فارغ عندما يزيل القص كل المسافات البادئة واللاحقة ويبقى شيء—حروف أو أرقام أو ترقيم أو أحرف مرئية أخرى. السطر فارغ عندما يكون المقطع فارغًا أو يصبح فارغًا بعد القص، ويشمل المسافات الخالصة وعلامات التبويب والصفوف الفارغة تمامًا بين الفقرات.
الإجمالي يساوي غير الفارغة زائد الفارغة بالبناء، فتستطيع تأكيد تلك الهوية في الاختبارات. سلسلة بسطر واحد بلا أي سطر جديد تنتج إجماليًا واحدًا وغير فارغ واحد عند وجود محتوى. السلسلة التي تنتهي بسطر جديد تنتج مقطعًا فارغًا أخيرًا، بما يطابق ما تعرضه محررات وأدوات سجل كثيرة كصف فارغ إضافي في نهاية الملف.
فضّل حاسبة عدّ الأسطر هذه عندما تكون نية البحث عدّ أسطر النص أو عدّ الأسطر الفارغة أو إجمالي غير الفارغة عبر الإنترنت. لا تستخدمها عندما تحتاج عدّ كلمات أو أحرف كوعد منتج رئيسي أو أطوال بايت لملفات ثنائية—تلك صفحات أخرى.
متى تفيد الأداة وأين تقف حدودها
استدعِ أداة عدّ الأسطر المجانية في المتصفح لفحوصات الواجبات وتدقيقات paste-bin ومعاينات السجل ومراجعات سريعة للأسطر الفارغة دون تثبيت wc أو كتابة سكربت في كل لغة. سير عمل نموذجي يلصق مسودة markdown ويعدّ الأسطر الفارغة بين الأقسام ثم يضيّق التباعد قبل النشر. اقرن هذه النهاية بأدوات diff أو تنسيق عندما تكون الخطوة التالية مقارنة نسختين سطرًا بسطر، لكن أبقِ عدّ الأسطر صفحة مستقلة حتى لا تختلط نية بحث count-lines بإحصاءات الملف الكامل أو عدّ صفحات PDF.
لا تتوقع عدّ كلمات أو تقسيم جمل أو كشف فقرات واعٍ باللغة—تلك مشاكل منفصلة بمصطلحات SEO منفصلة. ثبّت تجهيزات لـ ASCII بسطر واحد وصفوف فارغة مختلطة ونهايات CRLF حتى لا تغيّر إعادة الهيكلة الإجماليات بصمت.
حالات الاستخدام
فحوصات تباعد المسودات وmarkdown
يلصق الكتّاب والمحررون المسودات لرؤية إجمالي الأسطر مقابل صفوف المباعدة الفارغة قبل نشر مقالات المدونة أو ملفات README.
تدقيقات السجل ولصق الدعم
تعدّ أدوات الدعم أسطر السجل غير الفارغة في لصق العملاء وتبلّغ عن ضوضاء الأسطر الفارغة دون تثبيت أدوات shell محلية.
الأسئلة الشائعة
ماذا يحدث إن كان text فارغًا؟
تُرفض السلسلة بطول صفر ولا تُحاسب؛ النص ذو المسافات فقط مسموح ويُحسب كأسطر فارغة.
هل يُحسب سطر جديد أخير كسطر إضافي؟
نعم. النص المنتهي بفاصل سطر يتضمن مقطعًا فارغًا أخيرًا، فيزيد total بواحد وblank بواحد.
كيف يُعالَج CRLF وLF؟
يُعامل إرجاع الحامل وتغذية السطر وأزواج CRLF كلها كفواصل أسطر. يُحسب CRLF كفاصل واحد حتى لا تُحسب ملفات Windows مرتين.
هل يُعد السطر الذي يحتوي على مسافات فقط فارغًا؟
نعم، فالسطر فارغ إذا لم يحتوِ على شيء أو احتوى على مسافات وعلامات جدولة فقط، وأي حرف أو رقم أو علامة ترقيم يجعله سطر محتوى. ويُقبل النص المكوّن من مسافات فقط وتُعد كل أسطره فارغة.
هل يساوي مجموع الأسطر الممتلئة والفارغة الإجمالي دائمًا؟
نعم دائمًا، لأن كل سطر إما ممتلئ وإما فارغ. ففي المثال تنقسم 4 أسطر إلى سطرين بمحتوى وسطرين فارغين، فتستطيع التحقق من أي نتيجة بسرعة.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/line-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello\n\nWorld\n"}'const res = await fetch("https://api.kit.forhosting.com/str/line-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello\n\nWorld\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/line-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello\n\nWorld\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/line-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello\\n\\nWorld\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello\n\nWorld\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/line-count", 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\nWorld\n"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.line_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
الاستجابة JSON مستقر يمكن تثبيته في الاختبارات أو وضعه في النماذج أو استدعاؤه من SDK دون كتابة one-liner آخر في كل لغة. المدخل الفارغ يفشل بـ invalid_input حتى لا تخزّن المسارات حمولات بطول صفر بالخطأ. يعمل ودجت المتصفح المجاني بالكامل على جهازك؛ وتفرض API المدفوعة مسبقًا $0.002 لكل عنصر ناجح عندما تحتاج الخوادم نفس العدّ بالجملة.
عقد الإدخال ورفض الفارغ وقراءة حقول الاستجابة
النص ذو المسافات فقط مسموح: ليس إدخالًا فارغًا، ويبلّغ صحيحًا عن كل الأسطر كفارغة. يتبع نص المصدر نفس قواعد الاحتفاظ كعناصر parse أخرى في KIT. أرسل جسم JSON بالحقل النصي المطلوب text مضبوطًا على العينة غير الفارغة التي تريد قياسها. تُقبل الأسماء البديلة input وvalue وs وcontent وbody عندما تستخدمها عملاء أقدم أو مولّدات نماذج. غياب text أو قيمة غير سلسلة أو سلسلة بطول صفر ترفع invalid_input برسالة تسمّي المشكلة، ولا تُحاسب تلك الإخفاقات على API المدفوعة مسبقًا. عند النجاح تتضمن الاستجابة total كعدد مقاطع السطر وnon_empty كعدّ أسطر المحتوى وblank كعدّ الأسطر الفارغة أو ذات المسافات فقط وأسماء بديلة مريحة lines مساوية لـ total وnon_empty_lines مساوية لـ non_empty وempty_lines مساوية لـ blank حتى تتوافق أسماء حقول SDK المختلفة دون لصق إضافي. character_count هو طول UTF-16 للسلسلة الأصلية لفحوصات حجم سريعة بجانب إحصاءات السطر. original يعيد الإدخال الدقيق حتى تعرض الواجهات جداول قبل وبعد دون إعادة تخزين الحمولة. method دائمًا line_count حتى يتفرع الكود اللاحق دون شم الأشكال. استخدم total وحده عندما يحتاج شريط التقدم فقط إلى عدد الصفوف؛ واستخدم non_empty عندما يجب أن تتجاهل الفوترة أو التقييم صفوف المباعدة الفارغة؛ واستخدم blank عندما يهتم دليل أسلوب أو فحص شبيه بالمحلّل بالأسطر الفارغة بين الكتل. أبقِ الحمولات بأحجام رسائل ومستندات عادية تناسب عازل Worker لا تفريغات متعددة الميغابايت؛ هذا المنتج أداة نص لا مستودع ملفات جماعي.
استخدام API والتسعير وسير العمل والحدود العملية
استخدم API المدفوعة مسبقًا لـ KIT عندما يحتاج CMS أو مسار محتوى أو harness لجودة أو عميل جوّال نفس العقد تحت الرصيد بمبلغ $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تستهلك الرصيد أبدًا بعد رفض المحرك للطلب. سير آخر يبني تجهيزات حتمية: يغذّي عينة متعددة الأسطر معروفة ويثبّت total وnon_empty وblank ويسقط CI إن أخطأ إعادة هيكلة مستقبلية في معالجة CRLF أو نهايات السطر. يمكن لمؤلفي SDK توثيق text كالحقل الوحيد المطلوب وعرض مثال نجاح متعدد الأسطر ومثال خطأ سلسلة فارغة ليرى الدامجون طرفي العقد.
حالات التكامل
تجهيزات CI ومسارات المحتوى
تثبّت سكربتات البناء مخرجات golden لعدّ الأسطر حتى تسقط التكامل المستمر فورًا عند سوء معالجة CRLF أو انحدار الإدخال الفارغ.
أسئلة تقنية
كيف أعدّ أسطر النص بهذه الأداة؟
أرسل JSON مع text مضبوطًا على سلسلتك غير الفارغة. تعيد الاستجابة عدّ total وnon_empty وblank مع الأسماء البديلة وcharacter_count.
هل عدّاد الأسطر مجاني؟
تعمل أداة المتصفح مجانًا على جهازك. تستدعي استدعاءات API رصيد KIT المدفوع مسبقًا بمبلغ $0.002 لكل عنصر ناجح؛ إخفاقات التحقق لا تُحاسب.