تحويل النص إلى snake_case underscore_case مجاناً عبر الإنترنت آمن
الصق سطراً واقرأه في الحال بـ snake_case. كل ذلك يجري في متصفحك — ولا يُرسَل شيء مما تكتبه إلى أي مكان — والقواعد تتبع لغة هذه الصفحة، لا الإنجليزية.
اكتبه بطريقة أخرى
لا رفع لأي ملف
السطر نفسه، بالكتابات السبع كلها
| الكتابة | السطر نفسه، مكتوباً هكذا |
|---|---|
| حروف كبيرة | CRÈME BRÛLÉE لاثنين — STRASSE 17, FOOBAR |
| حروف صغيرة | crème brûlée لاثنين — straße 17, foobar |
| Title Case | Crème Brûlée لاثنين — Straße 17, Foobar |
| snake_case | crème_brûlée_لاثنين_straße_17_foo_bar |
| kebab-case | crème-brûlée-لاثنين-straße-17-foo-bar |
| camelCase | crèmeBrûléeلاثنينStraße17FooBar |
| عنوان رابط | creme-brulee-لاثنين-strasse-17-foobar |
من أين جاءت هذه الصيغ
كان الحرف الكبير والحرف الصغير يوماً أبجديتين مختلفتين. فالكبيرة رومانية، نُقِرت في الحجر بالإزميل؛ والصغيرة سليلةُ الخط الكارولنجي الصغير، صاغها قلمٌ يجري مسرعاً على الرَّق. وكان الطابعون يحفظون الصنفين في صندوقين منفصلين — الأعلى والأسفل — وبقي الاسمان بعد أن اختفى الصندوقان بزمنٍ طويل. أما صيغ البرمجة فأحدث بكثير، وقد ابتُكرت لحل مشكلةٍ واحدة: الاسم لا يحتمل فراغاً. فـsnake_case خرج من بدايات لغة C، وcamelCase من Smalltalk، وkebab-case من Lisp، وأما «السبيكة» في العناوين فخرجت من الحاجة إلى وضع عنوانٍ يقرؤه البشر داخل عنوانٍ لا يسمح بالفراغات ولا بعلامات الحركة.
أين تصادفها
تكبيرُ أول كل كلمة شأن العناوين وأغلفة الكتب؛ وتكبيرُ أول الجملة وحدها شأن كل ما سواه تقريباً، وشأن الواجهات أكثر فأكثر، لأنه أسرع في القراءة. وsnake_case يسمي أعمدة قواعد البيانات ومتغيرات بايثون؛ وcamelCase يسمي متغيرات جافاسكربت ودوال جافا؛ وkebab-case يسمي أصناف CSS وأسماء الملفات في مشاريع الوِب. وأما «السبيكة» فهي ما يحوّل عنوان مقالةٍ إلى الجزء الأخير من عنوانها، وهي التحويل الوحيد هنا الذي تقرؤه محركات البحث.
أسئلة متكررة
لماذا يغيّر التكبيرُ أحياناً عددَ الحروف؟
لأن حالة الحرف خاصّةُ لغةٍ لا خاصّةُ محرف. فالـß الألمانية تصير SS عند التكبير، فيصير الحرف الواحد حرفين. وفي التركية ياءٌ بنقطة وأخرى بلا نقطة، وكبيرةُ i هي İ لا I — والخطأ هنا يحيل كلمةً تركية إلى كلمةٍ أخرى. وتحويلات هذه الصفحة تتبع قواعد لغة الصفحة نفسها، ولهذا قد يعطي المُدخَل الواحد في الصفحة التركية غيرَ ما يعطيه في الإنجليزية.
لماذا تحذف «السبيكة» علامات الحركة وعلامات الترقيم؟
لأن العنوان ينبغي أن ينجو من النسخ في رسالة، ومن الطبع على ورق، ومن إعادة كتابته باليد. والحروف ذات العلامات مشروعةٌ في عناوين اليوم، غير أنها تُرمَّز بالنسب المئوية عند النسخ، فيستحيل عنوانٌ مقروء إلى سطرٍ من الرموز. وردُّها إلى حروفٍ مجردة وأرقامٍ وشُرَطٍ يُبقي العنوان مقروءاً وقابلاً للمشاركة وواحداً أينما ظهر.
هل الجواب دقيق؟
حيث تُعرَّف الوحدتان إحداهما بالأخرى بأعداد صحيحة، نعم — وتقول الصفحة ذلك فوق الرقم، والتقريب الوحيد في عدد المنازل المعروضة. وحيث لا تكون النسبة عشرية منتهية، تعرض الصفحة اثنتي عشرة رقماً معنوياً وتقول إن العلاقة تقريبية، بدل أن تدّعي غير ذلك.
هل يغادر جهازي شيءٌ مما أكتبه؟
لا. الحساب يجري في متصفحك؛ لا يُرفَع شيء، ولا خادم أصلاً ليُرفَع إليه. حمِّل الصفحة مرة واحدة وتبقى تعمل والشبكة مطفأة.
لماذا تحوّل النص إلى snake_case
لا يستطيع مبرمج أن يسمي متغيراً annual report total، لأن الاسم لا يمكن أن يحتوي على فراغ. ولا يمكن أن يُسمى عمود في قاعدة بيانات Customer First Name. وملف اسمه Final Draft (2).docx سيزعج سكربتاً عاجلاً أو آجلاً. ففي مكان ما من الطريق يجب أن تصبح العبارة البشرية كلمة واحدة، والشكل الذي استقرت عليه مجتمعات كثيرة هو snake_case: كل الأحرف صغيرة، والكلمات موصولة بشرطات سفلية، annual_report_total وcustomer_first_name وfinal_draft_2. وتحويل النص إلى snake_case هو أخذ أي عبارة، في أي حالة، وتحويلها إلى ذلك الشكل في خطوة واحدة.
الصق سطراً واقرأه مرة أخرى بصيغة snake_case. يجري التحويل في متصفحك، ولا يُرسل شيء تكتبه إلى أي مكان، وتتبع القواعد لغة هذه الصفحة لا الإنجليزية. فهي تقطّع السطر إلى كلمات وتحوّلها إلى حروف صغيرة وتصلها بشرطات سفلية. والسطر المكتوب أصلاً بـ camelCase يُقطّع عند حروفه الكبيرة أيضاً، فتصبح fooBar هي foo_bar. ستجد في الأسفل ما يعنيه ذلك بالضبط، وما يُسقط، وكيف تعامل الصفحة الحروف الصعبة في اللغات المختلفة، وأين يكون snake_case هو العرف وأين لا يكون، والأفخاخ التي توقع الناس الذين يحوّلون النص إلى snake_case على عجل.
ما يفعله التحويل
قطع، وحروف صغيرة، ووصل
تقطّع الصفحة السطر أولاً إلى كلمات. ثم تحوّل كلاً منها إلى حروف صغيرة وتصلها بشرطات سفلية. فالسطر Crème brûlée for 2 — straße 17, fooBar يعود على أنه crème_brûlée_for_2_straße_17_foo_bar. فالعلامات فوق الحروف تُحفظ، والأرقام تبقى كلمات قائمة بذاتها، والشرطة والفاصلة تختفيان، وقد قُطعت fooBar إلى جزأين، لأن الحرف الكبير داخلها يعلّم حداً.
أين تقع القطوع
حد الكلمة هو فراغ أو علامة ترقيم أو شرطة أو رمز أو تغيّر من حرف صغير إلى كبير داخل كلمة. وعليه فإن العبارة customerFirstName والعبارة Customer First Name والعبارة customer-first-name تصبح كلها customer_first_name. وهذه هي القوة العملية للتحويل: فهو يقبل أي نقطة بداية تقريباً ويصل دائماً إلى المكان نفسه.
نسخ النتيجة
يقوم زر بجانب النتيجة بنسخها إلى الحافظة. الصقها في المحرر أو المخطط أو مربع حوار الملف حيث يلزم الاسم.
ما لا يفعله التحويل
لا يحافظ على علامات الترقيم
الفواصل والنقاط والشرطات حدود بين الكلمات، لا حروف تُنقل. وهذا ما تريده لاسم ملف أو عمود قاعدة بيانات، وليس ما تريده لنثر. وإذا مررت جملة عبر الصفحة فإنها تعود اسماً لا جملة، وتختفي علامات الترقيم الأصلية.
لا يزيل العلامات فوق الحروف
يحتفظ السطر بحروفه المشكولة: crème_brûlée. وتقبلها أنظمة كثيرة، لكن بعضها لا يقبل، وقد يسبب اسم يحتويها متاعب في أدوات أقدم. وإذا احتجت إلى حروف سادة، فاستخدم صفحة slug العنوان، التي تنزع العلامات عن الحروف اللاتينية.
لا يتحقق من أن الاسم صالح في لغتك
لدى لغات البرمجة قواعدها الخاصة. فبعضها يمنع اسماً يبدأ برقم، وبعضها يحجز كلمات مثل class أو return. وتحوّل الصفحة النص إلى اسم بالشكل الصحيح، ويبقى عليك أن تتأكد من أن الاسم قانوني حيث تستخدمه. وعبارة مثل 2 for 1 offer تصبح 2_for_1_offer، وترفضها معظم اللغات عند البداية.
اللغة مهمة
كتابات تُكتب بلا فراغات
القطع إلى كلمات يحتاج إلى حدود. والصينية واليابانية تُكتبان بلا فراغات، ولذلك يعود سطر بهاتين الكتابتين كلمة واحدة. وتفضّل الصفحة أن تقول ذلك على أن تقطع في مكان خمّنته، لأن قطعاً خاطئاً ينتج اسماً يبدو معقولاً ويعني الشيء الخطأ.
التركية والياء المنقوطة
تحويل الحروف إلى صغيرة يتبع قواعد لغة الصفحة. ففي التركية الشكل الصغير للحرف I هو ı بلا نقطة، والشكل الصغير للحرف İ هو i. والمحوّل الذي يطبق القواعد الإنجليزية يغيّر الكلمات. وتتبع هذه الصفحة اللغة التي كُتبت بها.
الألمانية وحرف s الحاد
الحرف الألماني ß حرف صغير أصلاً ويُحفظ، كما في straße_17. أما STRASSE بالحروف الكبيرة فتعود strasse، لأن الشكل الكبير لا يتذكر هل جاء من ß أو من حرفين.
الكتابات من اليمين إلى اليسار والهندية
في العربية والعبرية والكتابات الهندية فراغات بين الكلمات ولا حالة للحروف، ولذلك تصل الصفحة كلماتها بشرطات سفلية وتترك الحروف كما هي. وهل تقبل أداة معينة أسماء كهذه فسؤال آخر.
أين يكون snake_case هو العرف
Python وRuby
يوصي دليل أسلوب Python بـ snake_case للدوال والمتغيرات والوحدات، وتتبع Ruby العادة نفسها. وإذا كتبت شيفرة بأي منهما، فأسماؤك في هذا الشكل غالباً دائماً.
قواعد البيانات
أسماء الجداول والأعمدة في SQL هي snake_case عادة: customer_id وcreated_at وorder_total. وهو يتجنب الحاجة إلى اقتباس الأسماء وآمن عبر أنظمة قواعد البيانات، التي يحوّل بعضها الأسماء غير المقتبسة إلى حالة واحدة فيحوّل camelCase إلى سلسلة حروف غير مقروءة.
ملفات البيانات وواجهات البرمجة
تستخدم خدمات ويب كثيرة مفاتيح snake_case في JSON الخاص بها، وكثيراً ما تحمل جداول البيانات المصدّرة للمعالجة اللاحقة رؤوس snake_case. وإذا كانت بياناتك في طريقها عبر من CSV إلى JSON، فإن صف الرأس يصبح المفاتيح، والرؤوس المرتبة بـ snake_case تجعل النتيجة سهلة الاستخدام.
الثوابت ومتغيرات البيئة
تُكتب الثوابت ومتغيرات البيئة عرفاً بحروف كبيرة مع شرطات سفلية: MAX_RETRIES وDATABASE_URL. والطريقة للحصول عليها أن تحوّل النص إلى snake_case أولاً ثم ترفع النتيجة بـ حوّل النص إلى أحرف كبيرة.
أسماء الملفات
الأحرف الصغيرة مع الشرطات السفلية اسم ملف آمن على كل نظام، ويُرتب ويُبحث فيه بصورة متوقعة. ويستخدمه كثير من المصورين والباحثين والإداريين لهذا السبب بالذات.
أين لا يكون هو العرف
JavaScript وJava
تفضل هاتان اللغتان camelCase للمتغيرات والدوال وPascalCase للأصناف. وقد يحتاج اسم من سكربت Python إلى تحويل قبل أن يظهر في ملف JavaScript. انظر camelCase لذلك.
CSS وعناوين الويب
تستخدم أسماء أصناف CSS وعناوين الويب عادة الواصلات لا الشرطات السفلية. والأداة لذلك هي kebab-case. وتعامل محركات البحث الواصلة فاصلاً بين الكلمات والشرطة السفلية واصلاً، وهو فرق صغير خلف عادة العناوين الموصولة بواصلات.
النثر والعناوين
snake_case للأسماء، لا للقراءة. وعنوان أو جملة به ثقيل على العين. وللنص البشري أبقِ الكلمات والفراغات، وللعنوان فكّر في Title Case.
كيف تحوّل النص إلى snake_case هنا
الصق نصك أو اكتبه
أدخل العبارة في الحقل الأول. تظهر النتيجة فوراً في الثاني، لتشاهدها تتغير أثناء الكتابة.
افحص القطوع
انظر أين قُسمت الكلمات. فكلمة مثل iPhone أو eBay تُقطع عند الحرف الكبير، ومختصر مثل HTTPServer يحتاج إلى نظرة ليتبين أنه خرج كما قصدت.
انسخها
اضغط زر النسخ والصق النتيجة حيث تحتاج إليها. ولأشكال أخرى من السطر نفسه انظر أدناه.
استخدام snake_case عبر مشروع كامل
عرف واحد للمجموعة كلها
المشروع الذي يخلط أساليب التسمية أصعب قراءة من مشروع قبيح قليلاً لكنه متسق. فإذا كانت قاعدة البيانات تستخدم snake_case، فإن الشيفرة التي تتحدث إليها تستخدمه غالباً أيضاً، وكذلك الملفات المتنقلة بينهما. وحين تحوّل النص إلى snake_case لعمود جديد أو حقل جديد، فأنت تختار الاسم الذي سيتعين على كل طبقة أخرى أن تعيش معه، فاخترْه مرة واحدة وأكمل به.
نقل الأسماء بين الأعراف
عاجلاً أو آجلاً يجب أن يظهر اسم من عرف في عرف آخر. فعمود قاعدة بيانات customer_first_name يصبح customerFirstName في كائن JavaScript وcustomer-first-name في صنف CSS أو عنوان. وبدل إعادة كتابة كل منها يدوياً، الصق الأصل في الصفحة التي تنتج الشكل الذي تحتاج إليه: camelCase للشيفرة في عائلتي C وJavaScript وkebab-case للأنماط والعناوين. والأشكال الثلاثة للاسم نفسه ترجمات دقيقة لبعضها، والمحوّل يصنعها باتساق.
ملفات الإعدادات
تستخدم ملفات الإعدادات غالباً مفاتيح snake_case، خاصة في YAML الذي تستخدمه أدوات كثيرة. وحين تعدّ ملفاً كهذا من بيانات محفوظة بصيغة JSON، فإن من JSON إلى YAML يُبقي المفاتيح كما كتبتها، ومن YAML إلى JSON يفعل العكس. استقر على snake_case للمفاتيح قبل أن تبدأ، ولن يزعجها التحويل بين الصيغ.
إعادة التسمية بالجملة
إذا ورثت ملف بيانات رؤوسه خليط من الأساليب، فحوّل كل رأس بهذه الصفحة واستبدلها في مرور واحد. اختبر بعينة صغيرة أولاً، لأن سكربتاً يقرأ الملف بالرأس سينكسر إذا تغير اسم في بعض الأماكن فقط. واحتفظ بقائمة من الأسماء القديمة والجديدة بجانب الملف ليرى زميل ما الذي تغير.
كتابة أسماء تدوم
قل ما الشيء، لا كيف يُخزَّن
الاسم الجيد يصف المحتوى. فـ order_total يقول ما يعنيه الرقم؛ وcol7 لا يقول. وحين تحوّل النص إلى snake_case، تأكد من أن العبارة التي تبدأ بها هي الأوضح التي تستطيع كتابتها، لأن المحوّل سيحفظ وضوحها أو غموضها بأمانة.
تجنب مختصرات لا يفهمها إلا أنت
اسم مثل cust_fn_dt لغز لأي شخص آخر، ولك بعد ستة أشهر. والشرطات السفلية رخيصة، وكذلك الكلمات الإضافية. واسم أطول يُقرأ كجملة هدية أفضل للشخص التالي من اسم قصير يحتاج إلى مفتاح.
أبقِ المفرد والجمع متسقين
قرّر هل الجداول تُسمى بالمفرد، customer، أو بالجمع، customers، والتزم به. والعرف أقل أهمية من اتساقه. والعبارة المحوّلة إلى snake_case تحتفظ بالعدد الذي أعطيته إياها.
ضع بادئة حين يفيد
في مخطط كبير تجمع بادئة قصيرة الأسماء المتصلة: billing_address وbilling_city وbilling_country. وكتابة العبارة بالبادئة وتحويلها يعطي نتائج متسقة، وقائمة أبجدية بعد ذلك تجمّع نفسها.
اختبر الأسماء قبل أن تلتزم بها
قبل أن يدخل اسم في مخطط أو واجهة برمجة، جرّبه في الأماكن التي سيظهر فيها: استعلام ومتغير وقائمة ملفات. فإذا قُرئ طبيعياً في الثلاثة، فهو يصلح. وإذا بدا محرجاً، فقصّر العبارة أو أعد صياغتها وحوّل النص إلى snake_case مرة أخرى. ودقيقة من الاختبار في البداية توفر إعادة تسمية عبر مئات الملفات لاحقاً.
السطر نفسه في الكتابات السبع كلها
جدول بالأشكال
تحت المحوّل يعرض جدول سطر المثال بالأشكال السبعة كلها التي يقدمها الموقع: حروف كبيرة، وحروف صغيرة، وTitle Case، وsnake_case، وkebab-case، وcamelCase، وslug عنوان. وهي طريقة سريعة لترى كيف تبدو الكلمات نفسها في كل منها.
من أين تأتي هذه الأشكال
أبجديتان
كانت الحروف الكبيرة والصغيرة يوماً أبجديتين مختلفتين. فالكبيرة رومانية، نُحتت في الحجر بإزميل؛ والصغيرة تنحدر من الحروف الصغيرة الكارولنجية، التي شكّلها قلم يتحرك بسرعة على الرق. وأبقى الطباعون الاثنتين في درجين منفصلين، الدرج العلوي والدرج السفلي (upper case وlower case)، وبقيت التسميتان طويلاً بعد زوال الدرجين.
أسماء بلا فراغات
أشكال البرمجة أحدث بكثير وابتُكرت لحل مشكلة واحدة: لا يمكن أن يحتوي اسم على فراغ. فقد جاء snake_case من لغة C المبكرة، وcamelCase من Smalltalk، وkebab-case من Lisp، وslug العنوان من الحاجة إلى وضع عنوان بشري في عنوان لا تُسمح فيه الفراغات والعلامات فوق الحروف. وكانت الشرطة السفلية حرفاً مريحاً على لوحات مفاتيح ذلك الزمن، وتبدو كفراغ يجلس على السطر.
أفخاخ عند تحويل النص إلى snake_case
بدء اسم برقم
ترفض معظم اللغات وقواعد البيانات اسماً يبدأ برقم. أضف حرفاً أو كلمة في المقدمة إذا بدأت العبارة بواحد.
توقع معالجة الكلمات المحجوزة
عبارة مثل class أو order قد تكون كلمة محجوزة في لغتك أو في SQL. والصفحة لا تعرف، وعليك أن تفحص.
المختصرات
قد يُقطع مختصر داخل اسم camelCase، مثل parseHTMLString، إلى parse_h_t_m_l_string أو parse_html_string بحسب القاعدة. افحص أن النتيجة هي ما تريد.
الأسماء الطويلة جداً
تفرض قواعد البيانات وأنظمة الملفات حدوداً للطول. وقد تصطدم عبارة طويلة محوّلة إلى اسم بأحدها. قصّر الصياغة قبل أن تحوّل.
أسئلة يطرحها الناس قبل التحويل
ماذا يحدث لعلامات الترقيم؟
تُعامل حداً بين الكلمات ولا تُنقل.
هل تُحفظ الأرقام؟
نعم، ككلمات قائمة بذاتها، مفصولة بشرطات سفلية.
هل يتعامل مع مدخل camelCase؟
نعم. فالحرف الكبير داخل كلمة يعلّم قطعاً، ولذلك تصبح fooBar هي foo_bar.
هل أستطيع استخدامه للغات أخرى؟
نعم، بقواعد لغة الصفحة. والكتابات بلا فراغات، مثل الصينية واليابانية، تعود كلمة واحدة.
هل يُرفع نصي؟
لا. ما تكتبه هنا لا يُرسل أبداً إلى أي مكان، فمسودة أو كلمة مرور أو اسم عميل آمن هنا كما في محرر نصوص.
كيف أحصل على واصلات بدلاً من ذلك؟
باستخدام حوّل النص إلى kebab-case.
مثال محلول
لنفترض أنك تبني قاعدة بيانات صغيرة لمكتبة وأرسل إليك الموظفون عناوين الأعمدة من جدولهم: Book Title وAuthor's Last Name وYear Published (YYYY) وISBN-13. تحوّل كلاً بدوره وتقرأ book_title وauthor_s_last_name وyear_published_yyyy وisbn_13. وحوّلت الفاصلة العليا عمود المؤلف إلى شيء غير مرتب، فتقصّر الأصل إلى Author Last Name وتحوّل مرة أخرى: author_last_name. وعمود السنة أوضح دون ملاحظة الصيغة، فتبقي year_published. أربعة أسماء أعمدة مرتبة، كُتبت في دقيقة، وكل منها اسم ستقبله قاعدة البيانات.
قائمة تحقق قصيرة
قبل التحويل
اكتب العبارة بكلمات عادية، دون ملاحظات بين قوسين. وتأكد من أن الوجهة تقبل الشرطات السفلية والعلامات فوق الحروف.
أثناء التحويل
الصق العبارة، وانظر إلى القطوع، وتأكد من أن الاسم يبدأ بحرف.
بعد التحويل
افحص الطول، وافحص مقابل الكلمات المحجوزة، واحتفظ بسجل للعبارة الأصلية، ليمكن تتبع الاسم إلى معناه.
أخطاء شائعة
استخدام snake_case لنص سيقرؤه الناس
إنه للأسماء، لا للنثر.
نسيان ما تسمح به الوجهة
الأرقام في البداية والعلامات فوق الحروف وحدود الطول تختلف بين الأنظمة.
تحويل المختصرات دون النظر
افحص القطوع حولها.
نصك يبقى على جهازك
يجري التحويل محلياً. يعالج متصفحك نصك ولا يُرسل شيء إلى أي مكان. ولا شيء يُحذف بعد ذلك ولا حساب يُنشأ. هذه هي الطريقة البسيطة لتحويل النص إلى snake_case.
الخلاصة
لتحويل النص إلى snake_case هنا، الصق سطراً واقرأه مرة أخرى بالكلمات مقطّعة وبحروف صغيرة وموصولة بشرطات سفلية. والسطر المكتوب أصلاً بـ camelCase يُقطّع هناك أيضاً، فتصبح fooBar هي foo_bar. ولا تحافظ الصفحة على علامات الترقيم: فالفواصل والنقاط والشرطات حدود بين الكلمات، لا حروف تُنقل، وهذا ما تريده لاسم ملف أو عمود قاعدة بيانات ولا تريده لنثر. والقطع إلى كلمات يحتاج إلى حدود، ولذلك تعود الصينية واليابانية، المكتوبتان بلا فراغات، كلمة واحدة. وتحويل الحروف إلى صغيرة يتبع لغة الصفحة. ولا يُرفع شيء.