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