اقتطاع من الوسط
أدخل مسارًا من 62 محرفًا في 36 دون أن تفقد طرفيه: يُظهر /Users/alex/Docum...engines/parse.js المجلد الأعلى واسم الملف معًا. وتُحسب النقاط ضمن الحد، ويمكنك تحديد كم تُبقي من البداية. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- الطول
- 36
- النص
- /Users/alex/Docum...engines/parse.js
- الطول الأصلي
- 62
- طول النتيجة
- 36
- علامة الحذف
- ...
الاقتطاع من الوسط يقصّر سلسلة إلى طول عرض مستهدف بإزالة المركز وإدراج علامة حذف، فتبقى البداية والنهاية قابلتين للقراءة. هذا هو النمط الذي تستخدمه مديرات الملفات والطرفية ومسار التنقل وعارضات السجلات وخلايا الجداول عندما لا يتسع مسار أو اسم ملف في العمود: تظل ترى المجلد الجذر والملف الفعلي، أو بداية UUID وأرقامه الأخيرة. أدخل النص والطول الصحيح الذي يجب أن تلتزم به النتيجة، واختر اختياريا كم حرفا بادئا تُبقي وأي علامة حذف تُدرج. يعيد الحالّ السلسلة المقصورة والبادئة واللاحقة المحفوظتين وما إذا وقع قطع وطولي الأصل والنتيجة ورسالة موجزة.
معنى الاقتطاع من الوسط مقابل قطع البادئة
الاقتطاع من الوسط قيد عرض صارم بشكل يختلف عن اقتطاع البادئة العادي. قطع البادئة يُبقي بداية المصدر فقط ويُلحق علامة حذف في النهاية؛ وهذا ينفع الجمل والعناوين لكنه يخفي ما يحتاجه الناس عادة في مسار أو اسم ملف: الاسم الورقي واللاحقة وآخر مجلد أو الأرقام الختامية لمعرّف. الاقتطاع من الوسط يحذف مقطعا متصلا من الداخل ويدرج علامة حذف بين بادئة محفوظة ولاحقة محفوظة، فتبقى المرتكزان ظاهرين.
الحد الأقصى الذي ترسله هو الحد الأقصى للنتيجة كاملة بما فيها علامة الحذف عندما يلزم القطع. إذا كان المصدر يتسع أصلا تعيده الأداة دون تغيير وتضع truncated على false وتضع السلسلة كاملة في start وتترك end فارغا حتى يستطيع المستدعي تجاوز عناصر الواجهة التي توحي بمحتوى مخفي. إذا لم يتسع يحسب الحالّ ميزانية محتوى تساوي length ناقص طول علامة الحذف.
عندما تحذف head تُقسّم هذه الميزانية بأعدل ما يمكن ويذهب الحرف الفردي المتبقي إلى البداية. عندما تعيّن head تُحفظ تلك الأحرف البادئة (مقصورة على الميزانية) ويذهب باقي الميزانية إلى النهاية، وهكذا تُجبر اسما طويلا على الإبقاء على لاحقته مع إظهار تلميح قصير للمجلد. الأطوال دون واحد لا تُقبل أبدا: معاينة بعرض صفر ليست عقدا نافعا للجداول أو مسار التنقل أو السجلات، والحدود السالبة أخطاء عميل دائما.
النص الفارغ مع طول صالح مسموح ويُعاد فارغا بلا علامة حذف، فلا تسقط المسارات التي تمرر حقول مسار اختيارية لمجرد أن اسما فارغ.
نصائح عملية للمسارات وأسماء الملفات والبحث المرتبط
استخدم هذه القدرة عندما تكون نية البحث الاقتطاع من الوسط أو تقصير اسم ملف بعلامة حذف أو إبقاء بداية مسار ونهايته ظاهرين على الشبكة. فضّل التقسيم المتوازن للمعرّفات العامة وUUID؛ وفضّل head صغيرا عندما يقع الرمز الثمين في النهاية مثل تقرير بلاحقة؛ وفضّل head كبيرا عندما يقع الرمز الثمين في البداية مثل مضيف أو حرف محرك يجب ألا يُخفى. علامة حذف مخصصة مثل حرف Unicode واحد للحذف الأفقي أو نقطة وسطى بمسافات أو تسمية «المزيد» بين قوسين مربعين تعمل ما دام طولها ما زال يتسع في الميزانية.
هذه الصفحة ليست ملخصا بالذكاء الاصطناعي ولا قاطع بادئة فقط للجمل ولا عدّاد فقرات أو كلمات ولا موحّد مسارات يحل النقاط أو مجلدات المنزل. فضّل أداة اقتطاع بادئة عندما قرر المنتج الإبقاء على بداية الجملة فقط؛ وفضّل أداة تقصير بـLLM عندما تحتاج ضغطا يحفظ المعنى؛ وفضّل هذه القدرة عندما يجب على إنسان أن يميّز طرفي مسار أو اسم ملف أو URL أو معرّف داخل شبكة أحرف ثابتة.
حالات الاستخدام
أعمدة مدير الملفات ومسار التنقل
اقصر المسارات المطلقة الطويلة حتى يظل جدول أو مسار تنقل يُظهر الجذر واسم الملف الورقي بدل إخفاء اللاحقة خلف علامة حذف ختامية.
عارضات السجلات وأسماء مخرجات CI
أدخل مسارات مخرجات البناء وأسماء التقارير المرفوعة في سطر سجل بعرض ثابت مع إبقاء آخر مجلد ولاحقة الملف مقروءين.
اختبارات وحدات لمنسّقات المسارات
ولّد اقتطاعات وسطى معلومة وقطوعا مائلة بـhead وحالات رفض لطول دون واحد لمساعدات الواجهة وأسطح التخزين.
الأسئلة الشائعة
كيف يقرر الاقتطاع من الوسط ماذا يُبقى؟
يطرح طول علامة الحذف من حدك الأقصى ثم يُبقي بادئة ولاحقة تملآن تلك الميزانية معا. احذف head لتقسيم زوجي (الباقي الفردي للبداية) أو عيّن head لتثبيت عدد الأحرف البادئة المحفوظة.
هل هذا مثل اقتطاع النص من النهاية؟
لا. اقتطاع النهاية يخفي اللاحقة. الاقتطاع من الوسط للمسارات وأسماء الملفات والمعرّفات حيث يجب أن تبقى البداية والنهاية ظاهرتين داخل طول ثابت.
ماذا يحدث إذا كان length صفرا أو لم تتسع علامة الحذف؟
يجب أن يكون length عددا صحيحا لا يقل عن واحد، وعندما يلزم القطع يجب ألا تطول علامة الحذف عن ذلك الطول. المهام الفاشلة لا تُحاسب أبدا.
هل يمكن إبقاء اسم الملف أكثر من المجلد؟
نعم. عيّن head عددا صحيحا صغيرا حتى يذهب معظم الميزانية المتبقية إلى النهاية. هذا النمط المعتاد عندما تكون اللاحقة أو الاسم الورقي هو الرمز الذي يحتاج الإنسان إلى تمييزه.
لماذا تكون البداية أطول من النهاية بمحرف واحد؟
لأن المساحة المتاحة تُقسم بالتساوي، والمحرف الزائد عند القسمة يذهب إلى البداية. لذلك يبقى في المثال 17 محرفًا في البداية و16 في النهاية.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/truncate-middle \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"/Users/alex/Documents/projects/kit-taller/src/engines/parse.js","length":36}'const res = await fetch("https://api.kit.forhosting.com/str/truncate-middle", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "/Users/alex/Documents/projects/kit-taller/src/engines/parse.js",
"length": 36
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/truncate-middle",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "/Users/alex/Documents/projects/kit-taller/src/engines/parse.js",
"length": 36
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/truncate-middle", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"/Users/alex/Documents/projects/kit-taller/src/engines/parse.js","length":36}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"/Users/alex/Documents/projects/kit-taller/src/engines/parse.js","length":36}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/truncate-middle", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "/Users/alex/Documents/projects/kit-taller/src/engines/parse.js",
"length": 36
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.truncate_middle",
"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 حتى لا تعامل عمليات التحقق من النماذج وCI سقفا صفريا أو سالبا على أنه نجاح. المسار منطق نصي حتمي خالص بلا شبكة ولا بذور عشوائية ولا اعتماد على الساعة، لذا تُرجع أداة المتصفح المجانية وواجهة API المدفوعة مسبقا JSON نفسه في كل استدعاء.
كيفية استدعاء API وما تحتويه الاستجابة
اقرن الاستدعاء بشيفرة التخطيط لديك إن احتجت قياس الحروف في خط متناسب؛ هذه النهاية تعدّ فهارس سلسلة JavaScript لا البكسلات المعروضة، وهو العقد نفسه الذي تستخدمه معظم منسّقات المسارات في الخادم. أرسل جسما JSON فيه text الإلزامي (أسماء بديلة input وvalue وstring وs وcontent وbody) وlength الإلزامي (أسماء بديلة max_length وmax وn وlimit وmax_len). يجب أن يكون الطول عددا صحيحا من واحد إلى مئة ألف ضمنا؛ القيم دون واحد وغير الصحيحة والحدود المفرطة هي invalid_input. الحقل الاختياري head (أسماء بديلة start وkeep_start وprefix) عدد صحيح غير سالب يفضّل كم حرفا بادئا يُبقى؛ احذفه لتقسيم متوازن. الحقل الاختياري ellipsis (أسماء بديلة marker وseparator وgap) افتراضه ثلاث نقاط ASCII ويمكن أن يكون أي سلسلة حتى اثنين وثلاثين حرفا؛ عندما يلزم الاقتطاع يجب ألا تطول علامة الحذف عن length وإلا يفشل الطلب بدل اختراع علامة مقصوصة. يجب أن يبقى النص ضمن مئة ألف حرف حتى لا يستنفد طلب واحد ذاكرة Worker أو المتصفح. عند النجاح تعيد الاستجابة input بوصفه السلسلة الأصلية وtext بوصفه السلسلة النهائية للعرض وlength بوصفه الحد المطلوب وoriginal_length وresult_length بعدّ الأحرف وtruncated بوليانيا وellipsis العلامة المستخدمة وstart البادئة المحفوظة وend اللاحقة المحفوظة وmessage موجزا إنكليزيا قصيرا. فشل التحقق — غياب text أو length أو text ليس سلسلة أو length ليس صحيحا أو دون واحد أو head سالب أو حمولة مفرطة أو علامة حذف لا تتسع تحت الحد عندما يلزم القطع — يعيد invalid_input ولا يُحاسب أبدا. التسعير رسم ثابت قدره $0.002 لكل طلب ناجح بوحدة item.
نصائح عملية للمسارات وأسماء الملفات والبحث المرتبط
فحوصات الذهاب والإياب للاختبارات سهلة: أرسل مسارا مطلقا طويلا بطول ستة وثلاثين وتوقع truncated بقيمة true وstart غير فارغ وend غير فارغ وresult_length لا يتجاوز ستة وثلاثين؛ عيّن head باثني عشر على المسار نفسه وتوقع أن تكون البادئة تلك الأحرف الاثني عشر تماما عندما تسمح الميزانية؛ أرسل length صفرا أو عددا صحيحا سالبا وتوقع invalid_input يذكر طولا دون واحد. المهام الفاشلة التي تعيد invalid_input لا تستهلك الرصيد المدفوع مسبقا، فيبقى التحقق من النماذج واختبارات CI السلبية رخيصة. عند تعليم المراجعين اعرض المسار الطويل نفسه بتقسيم متوازن وبتفضيل head حتى يروا أن موضع القطع وحقلَي start وend وحدهما يتغيران بينما تبقى قاعدتا الطول وعلامة الحذف كما هما.
أسئلة تقنية
هل أداة الاقتطاع من الوسط مجانية؟
أداة المتصفح مجانية وتعمل محليا. تستعمل استدعاءات API رصيد KIT المدفوع مسبقا بسعر $0.002 لكل طلب ناجح؛ والمهام الفاشلة لا تُحاسب أبدا.