كشف نمط النص: camelCase وsnake_case والمزيد
تجعل اصطلاحات التسمية المعرّفات والتسميات قابلة للتوقع، لكن النص غير المتسق قد يتسلل إلى الشفرة المصدرية والإعدادات وعمليات الاستيراد والمحتوى المولّد.
شغّل الأداة مجانًا
تفحص هذه الأداة الأحرف التي تقدمونها كما هي، وتبيّن إن كانت تتبع camelCase أو PascalCase أو snake_case أو CONSTANT_CASE أو kebab-case أو Train-Case أو dot.case أو path/case أو Title Case أو Sentence case أو صيغة بسيطة من الأحرف الكبيرة أو الصغيرة. وتعتمد مطابقة صارمة وحتمية، ولذلك تعطي المدخلة نفسها النتيجة نفسها دائمًا، وتوسم النصوص الملتبسة أو غير المنتظمة بوضوح على أنها مختلطة.
تعرّفوا إلى ما تفحصه الأداة
تقارن الأداة المدخلة كاملة بمجموعة محددة من أنماط التسمية. فهي لا تكتفي بعدّ الأحرف الكبيرة أو بالبحث عن فاصل واحد. في camelCase، يجب أن يبدأ النص بأحرف صغيرة وأن يتضمن حدًا واحدًا على الأقل بين الكلمات تدل عليه بداية كبيرة. ويبدأ PascalCase بحرف كبير ويصل الكلمات التالية من دون فواصل. أما أنماط snake وconstant وkebab وdot وpath فتتطلب مقطعين غير فارغين على الأقل، تفصل بينهما باستمرار شرطات سفلية أو شرطات أو نقاط أو خطوط مائلة. ويُفحص النص المفصول بمسافات بوصفه Title Case أو Sentence case أو كلمات صغيرة أو كلمات كبيرة. تتضمن النتيجة الناجحة النمط المتعرّف إليه وسببًا موجزًا. وإذا منعت علامات الترقيم أو الفواصل غير المتسقة أو الأحرف الكبيرة غير المتوقعة أو المسافات المحيطة المطابقة التامة، كانت النتيجة مختلطة بدل تقديم تخمين مضلل. يفيد هذا السلوك الصارم خصوصًا في التحقق، لأنه يميز الاصطلاح المتبع فعلًا من نص يشبهه فحسب. وتُقبل الأرقام داخل كثير من مقاطع المعرّفات، بينما تُرفض المدخلات الفارغة والقيم غير النصية بوصفها مدخلات غير صالحة بدل تصنيفها.
استخدموا الكشف الدقيق للتحقق من الاصطلاحات
تصبح تسمية النمط أكثر فائدة عندما تكون جزءًا من فحص جودة قابل للتكرار. أرسلوا معرّفًا من نموذج أو مسار بيانات أو مولّد شفرة أو تدقيق للتسميات، ثم قارنوا النمط المعاد بالاصطلاح الذي يتوقعه مشروعكم. فقد تفرض سياسة حقول API مثلًا استخدام snake_case، بينما تتطلب خصائص JavaScript استخدام camelCase. تشير النتيجة المختلطة إلى حاجة المدخلة إلى المراجعة، لكن الأداة لا تعيد كتابتها عمدًا. ويمنع فصل الكشف عن التحويل فحصًا آليًا من تغيير أسماء عامة أو أعمدة قواعد بيانات أو مفاتيح قد تكون لها مراجع قائمة من دون تنبيه. تتضمن الاستجابة أيضًا قيمة منطقية للتعرّف، مما يسهّل التفريع: تعيد الاصطلاحات المقبولة قيمة صحيحة، ويعيد النص غير المنتظم قيمة خاطئة. وتراعي المطابقة الدقيقة المسافات في البداية والنهاية، وبذلك تكشف مشكلات النسخ واللصق الخفية قبل دخول المعرّفات إلى النظام. وعند معالجة قيم كثيرة، استدعوا الإمكانية مرة لكل عنصر واحفظوا القيمة الأصلية والنمط المكتشف في تقرير التحقق. ينتج عن ذلك سجل قابل للتدقيق، ويتيح للمختص تقرير ما إذا كانت الأسماء الاستثنائية مقصودة.
فسّروا الحدود والمدخلات الملتبسة
قد تتداخل أسماء الأنماط عندما تتكون المدخلة من كلمة واحدة، لذلك تستخدم الأداة أسبقية عملية ولا تفترض حدود كلمات غير موجودة. يُبلّغ عن العنصر الواحد المكتوب بأحرف صغيرة بوصفه lowercase لا camelCase، لأن camel case يُظهر عادة مقطعًا واحدًا متصلًا على الأقل يبدأ بحرف كبير. وبالمثل، يكون العنصر الكبير الواحد UPPERCASE لا CONSTANT_CASE. أما الصيغ المفصولة متعددة الكلمات فهي أدق: customer_order_id هو snake_case، وCUSTOMER_ORDER_ID هو CONSTANT_CASE، وCustomer Order Id هو Title Case. يتطلب Sentence case بداية كبيرة تليها كلمات صغيرة مفصولة بمسافات، بينما يتطلب Title Case أن تبدأ كل كلمة بحرف كبير. وتعود السلاسل كثيرة الاختصارات، وأحرف Unicode، والفواصل العليا، والفواصل، والفواصل المضاعفة، والتركيبات مثل snake-Case بنتيجة مختلطة إذا لم تطابق نمطًا مدعومًا تمامًا. هذه النتيجة المتحفظة مقصودة، لأن تخمين تسمية مألوفة قد يسمح لمعرّف سيئ الصياغة باجتياز أداة التحقق. تعمل الخوارزمية محليًا وتحليليًا، من دون شبكة أو نموذج لغوي أو عشوائية أو سلوك يعتمد على الوقت. تتوفر الفحوص في المتصفح، وتبلغ كلفة الأتمتة عبر API مقدار $0.002 لكل عنصر.
حالات الاستخدام
فرض أسماء حقول API
تحققوا من أن أسماء الحقول الواردة أو المولّدة تتبع اصطلاح snake_case أو camelCase الذي يفرضه عقد API.
تدقيق مفاتيح الإعداد
صنّفوا مفاتيح ملفات الإعداد وحددوا الصيغ المختلطة قبل انتشار الأسماء غير المتسقة بين البيئات.
التحقق من المعرّفات المولّدة
اختبروا مخرجات مولّدات الشفرة بصورة حتمية من دون تغيير المعرّفات أو إخفاء الحدود سيئة الصياغة.
الأسئلة الشائعة
ما أنماط حالة الأحرف التي يمكن التعرّف إليها؟
تتعرف الأداة إلى camelCase وPascalCase وsnake_case وCONSTANT_CASE وkebab-case وTrain-Case وdot.case وpath/case وTitle Case وSentence case والأحرف الصغيرة والكبيرة وكلمات كل منهما.
لماذا لا تُعد الكلمة الصغيرة الواحدة camelCase؟
لا تحتوي الكلمة الصغيرة الواحدة حدًا متصلًا بين الكلمات، لذلك تُصنّف lowercase. ويتطلب camelCase حدًا كبيرًا واحدًا على الأقل بعد البداية الصغيرة.
هل تحوّل الأداة النص إلى نمط آخر؟
لا. فهي تكتشف النمط الحالي فقط. ويجعل فصل الكشف عن التحويل عملية التحقق أكثر أمانًا ويحافظ على المدخلة الأصلية من دون تغيير.
ماذا يحدث عند عدم اتساق الفواصل أو الأحرف الكبيرة؟
تكون النتيجة مختلطة وقيمة التعرّف خاطئة، لأن النص لا يتبع أي اصطلاح مدعوم بصورة تامة.
ما كلفة API؟
تبلغ كلفة كل طلب API مقدار $0.002. ويمكن تشغيل إصدار المتصفح في هذه الصفحة محليًا من دون استدعاء API.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/str/detect-case \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"customerOrderId"}'const res = await fetch("https://api.kit.forhosting.com/str/detect-case", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "customerOrderId"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/str/detect-case",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "customerOrderId"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/str/detect-case", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"customerOrderId"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"customerOrderId"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/str/detect-case", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "customerOrderId"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "str.detect_case",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |