تبدیل حالت متن چیست؟
تبدیل حالت متن یک رشته ورودی را دریافت کرده و همان کلمات را در قرارداد حالت حروف متفاوتی بازتولید میکند. رایجترین اهداف عبارتاند از camelCase و PascalCase (برای شناسهها در اکثر زبانهای آکولادی)، snake_case و CONSTANT_CASE (پایتون، Ruby، Rust، ماکروهای C)، kebab-case (URLها، نام کلاسهای CSS، ویژگیهای HTML، نامهای بسته npm)، dot.case (کلیدهای پیکربندی، مسیرهای شی JavaScript)، path/case (شناسههای سبک فایلسیستم)، Title Case و Sentence case (تیترها و نثر)، به علاوه حروف کوچک و UPPER CASE کامل. این مبدل مرزهای طبیعی کلمه در ورودی شما را شناسایی میکند — فاصله، خط تیره، زیرخط، نقطه، اسلش، و انتقالهای حروفکوچک→بزرگ که شناسههای سبک helloWorld را مشخص میکنند — و آنها را با جداکننده و الگوی بزرگنویسی مورد نیاز هر حالت هدف بازترکیب میکند.
تبدیل حالت چگونه کار میکند؟
ورودی شما کاملاً در مرورگر با یک توکنساز JavaScript ساده و یازده قالببند حالت پردازش میشود. مراحل کلی عبارتاند از:
- ورودی شما عیناً از textarea خوانده میشود — هر بایتی که پیست کردید به صورت محلی در حافظه نگهداشته میشود.
- یک توکنساز ورودی را روی فاصله، زیرخط، خط تیره، نقطه و اسلش تقسیم میکند، سپس هر تکه را دوباره روی مرزهای حروفکوچک→بزرگ تقسیم میکند (بنابراین
helloWorldبه["hello", "World"]تبدیل میشود) و روی مرزهای حرف↔رقم (بنابراینv2APIبه["v", "2", "API"]تبدیل میشود). - توکنهای خالی فیلتر میشوند و توکنهای باقیمانده با استفاده از
String.prototype.toLocaleLowerCaseکوچک میشوند تا حروف یونیکد در ترکی، آلمانی و سایر زبانها به درستی حفظ شوند. - یازده قالببند سپس توکنها را به هر حالت هدف به ترتیب تبدیل میکنند — camelCase، PascalCase، snake_case، CONSTANT_CASE، kebab-case، dot.case، path/case، Title Case (با لیست کلمات کوچک تا
and،the،ofو غیره کوچک بمانند مگر در اول یا آخر)، Sentence case، حروف کوچک کامل و UPPER CASE کامل. - خروجی در یک ردیف برای هر حالت در جدول نتایج نوشته میشود؛ هر ردیف دکمه کپی مستقل خود را دارد که از Clipboard API ناهمزمان با fallback همزمان
document.execCommand('copy')برای مرورگرهای قدیمی استفاده میکند.
چرا از مبدل حالت استفاده کنیم؟
- بازنویسی شناسهها: نام یک متغیر JavaScript را از
user_idبهuserId، یک تابع پایتون را ازhelloWorldبهhello_world، یا یک ثابت Rust را ازmaxBufferبهMAX_BUFFERتغییر دهید بدون ویرایش دستی کاراکتر به کاراکتر. - تبدیل کلیدهای پیکربندی: یک فایل JSON پر از کلیدهای camelCase را به snake_case YAML برای یک سرویس پایتون، یا به kebab-case برای یک نمودار Helm، در یک پیست واحد تبدیل کنید.
- نوشتن تیترها: یک پیشنویس تیتر پیست کنید و فرم Title Case (با استثناهای کلمات کوچک) را در کنار فرم Sentence case بخوانید — هر کدام که نشریه شما استفاده میکند را انتخاب کنید.
- تولید slug های URL: یک عنوان پست وبلاگ پیست کنید و فرم kebab-case را مستقیماً در فیلد slug سیستم مدیریت محتوا کپی کنید — توکنساز علائم نگارشی و عبارات چند کلمهای را بدون جداکنندههای اضافه مدیریت میکند.
کاربردهای رایج تبدیل حالت کداماند؟
جابجایی بین قراردادهای حالت حروف در مهندسی نرمافزار، تولید محتوا و مهندسی داده نمود پیدا میکند:
- بازنویسی کد: هنگام تغییر راهنمای سبک، شناسهها را در یک کدبیس تغییر نام دهید (مثلاً camelCase جاوااسکریپت → snake_case پایتون در طول بازنویسی backend) بدون وارد کردن اشتباهات تایپی.
- تغییر شکل بار API: کلیدهای JSON با camelCase را قبل از ارسال به یک backend Django یا Rails به snake_case، یا به kebab-case برای نام کلاس CSS-in-JS تبدیل کنید.
- نوشتن تیتر و slug: عناوین صفحه با Title Case، توضیحات متا با Sentence case، و slug های URL با kebab-case را از همان تیتر منبع در یک مرحله تولید کنید.
یک مثال از تبدیل حالت چگونه است؟
کوئری Hello World API را در ورودی پیست کنید. جدول نتایج یازده ردیف همزمان نمایش میدهد: helloWorldApi (camelCase)، HelloWorldApi (PascalCase)، hello_world_api (snake_case)، HELLO_WORLD_API (CONSTANT_CASE)، hello-world-api (kebab-case)، hello.world.api (dot.case)، hello/world/api (path/case)، Hello World Api (Title Case)، Hello world api (Sentence case)، hello world api (حروف کوچک) و HELLO WORLD API (UPPER CASE). همان ورودی پیستشده به صورت helloWorldAPI به همان سه کلمه توکنسازی میشود — آشکارساز مرز حروفکوچک→بزرگ این شکل را نیز مدیریت میکند.
آیا این در مرورگر من اجرا میشود؟
بله. توکنساز و یازده قالببند حالت حدود ۱۲۰ خط JavaScript ساده هستند که در تب مرورگر اجرا میشوند. هیچچیز آپلود نمیشود، هیچ service worker ورودی شما را پروکسی نمیکند، و صفحه برای مرحله تبدیل هیچ درخواست شبکهای ارسال نمیکند. تنها ترافیک خروجی داراییهای استاندارد بارگذاری صفحه هستند (CSS، فونتها، analytics) — متن شما هرگز به Ultim8Soft نمیرسد.
برای نامهای متغیر از کدام فرمت حالت استفاده کنم؟
بستگی به زبان و راهنمای سبک تیم دارد. کدبیسهای JavaScript و TypeScript به طور غالب از camelCase برای متغیرها و توابع، PascalCase برای کلاسها و کامپوننتهای React، و CONSTANT_CASE برای نامهای متغیر محیطی و ثابتهای سطح ماژول استفاده میکنند. پایتون (PEP 8)، Ruby و Rust برای متغیرها و توابع snake_case، برای کلاسها PascalCase و برای ثابتهای سطح ماژول CONSTANT_CASE را ترجیح میدهند. کدبیسهای C و C++ برای توابع به snake_case و برای ماکروهای پیشپردازنده به CONSTANT_CASE تکیه میکنند. در صورت تردید، linter یا formatter تیمتان را اجرا کنید — به شما خواهد گفت کدام قرارداد اجرا میشود.
ورودی چگونه توکنسازی میشود؟
توکنساز ابتدا ورودی را روی هر ترکیبی از فاصله، زیرخط (_)، خط تیره (-)، نقطه (.) یا اسلش (/) تقسیم میکند. سپس هر تکه حاصل دوباره روی مرزهای حروفکوچک→بزرگ تقسیم میشود (بنابراین helloWorld به ["hello", "World"] تبدیل میشود) و روی مرزهای حرف↔رقم (بنابراین v2API به ["v", "2", "API"] تبدیل میشود). توکنهای خالی فیلتر شده و توکنهای باقیمانده از طریق String.prototype.toLocaleLowerCase کوچک میشوند. سپس قالببندها توکنها را با جداکنندهای که هر حالت هدف نیاز دارد دوباره بزرگنویسی و ترکیب میکنند. این استراتژی تمام شش شکل رایج شناسه را مدیریت میکند — camelCase، PascalCase، snake_case، kebab-case، CONSTANT_CASE و نثر جدا شده با فاصله.
درباره یونیکد / کاراکترهای غیر ASCII چطور؟
حروف یونیکد در چرخه تبدیل باقی میمانند. توکنساز از String.prototype.toLocaleLowerCase و toLocaleUpperCase استفاده میکند که قوانین حالتبندی خاص locale را رعایت میکنند — i نقطهدار و بدون نقطه در ترکی، تبدیل ß آلمانی به SS، حروف لاتین با لهجه در فرانسوی و اسپانیایی، و غیره. کاراکترهای غیرحرفی که در مجموعه جداکنندهها نیستند (فاصله، _، -، .، /) — مثلاً ارقام، حروف با لهجه یا کاراکترهای CJK — درون توکنی که در آن قرار دارند نگهداشته میشوند و قالببندهای حالت آنها را عیناً بازتولید میکنند.
این مبدل حالت یک صفحه استاتیک است که توکنساز و یازده قالببند را کاملاً در مرورگر شما اجرا میکند — بدون کتابخانه خارجی، بدون فراخوانی شبکه برای هر تبدیل، بدون حساب کاربری. هر متنی را در بالا پیست کنید، یازده خروجی حالت را کنار هم بررسی کنید، و آنچه نیاز دارید را کپی کنید.