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