ابزارهای متن
ابزارهایی برای متن ساده و ساختاریافته؛ قالببندی JSON، تبدیل میان JSON، YAML، CSV و XML، مقایسهٔ دو متن و تست عبارتهای باقاعده، همه در مرورگر شما.
کارهای سریع
با یک کلیک، ابزار از قبل برای همان کار تنظیمشده باز میشود.
ابزارهای متن آنلاین - قالببندی، اعتبارسنجی و تست در مرورگر
متن همان قالبی است که برنامهنویسها واقعاً با آن کار میکنند. تنظیمات به شکل JSON میرسد، خطوط لاگ با عبارتهای باقاعده فیلتر میشوند، و پاسخهای API مدتها پیش از آنکه به شیء تبدیل شوند بهصورت متن خوانده میشوند. ابزارهای این دسته همین کار روزمره را در مرورگر انجام میدهند - بدون حساب کاربری و بدون آنکه چیزی به سروری فرستاده شود.
همهٔ این ابزارها تماماً سمت کلاینت اجرا میشوند. متنی که میچسبانید در همان تب میماند: جاوااسکریپت آن را روی دستگاه خودتان پردازش میکند و هرگز از شبکه عبور نمیکند. این موضوع مهمتر از آن است که به نظر میرسد، چون متنی که یک برنامهنویس نیاز دارد قالببندی کند اغلب دقیقاً همان متنی است که کمترین اجازه را دارد در یک سایت ناشناس بچسباند - پاسخ API محیط عملیاتی، یک رکورد مشتری، یک توکن، یا فایل تنظیماتی که اطلاعات ورود داخلش است.
این دسته شامل چیست
| ابزار | چه میکند | چه وقت به کارتان میآید |
|---|---|---|
| فرمتکنندهٔ JSON | JSON را تورفتگی میدهد، اعتبارسنجی و فشرده میکند و دقیقاً همان نویسهای را نشان میدهد که تجزیه در آن شکست خورده | پاسخ یک API یک خط ناخوانا شده، یا چیزی دادههای شما را نامعتبر رد میکند |
| تستر ریجکس | همزمان با تایپ، عبارت باقاعده را روی متن نمونه اجرا میکند، هر تطبیق را برجسته میکند و گروههای ثبت را جدا نشان میدهد | دارید الگویی برای فیلتر لاگ، قاعدهٔ اعتبارسنجی یا جستوجو و جایگزینی مینویسید |
| مبدل JSON | JSON، YAML، CSV و XML را در هر جهت به هم تبدیل میکند و JSON تودرتو را برای CSV به ستونها تخت میکند | یک فایل پیکربندی باید YAML باشد، یک خروجی باید در Excel باز شود، یا یک سرویس قدیمی فقط XML میفهمد |
| مقایسهٔ متن | هر خط اضافهشده، حذفشده و تغییرکرده میان دو متن را، همراه با علامتگذاری کلمههای تغییرکرده، نشان میدهد | دو نسخه از یک قرارداد، یک فایل پیکربندی یا یک تابع یکسان به نظر میرسند اما یکسان نیستند |
| تبدیل حروف بزرگ و کوچک | متن را یکجا به حروف بزرگ، حروف کوچک، Title Case، camelCase، snake_case، kebab-case یا اسلاگ URL تبدیل میکند | عنوانی با Caps Lock روشن تایپ شده، یا فهرستی از نامها باید به نام متغیر یا نشانی وب تبدیل شود |
| شمارندهٔ کلمات | همزمان با تایپ، کلمهها، نویسهها، جملهها و زمان مطالعه را میشمارد، خطهای تکراری را حذف میکند و متن Lorem ipsum میسازد | متنی باید در یک محدودیت طول جا شود، فهرستی پر از تکرار است، یا یک طرح صفحه به متن پرکننده نیاز دارد |
| تبدیل Markdown به HTML | Markdown را با پیشنمایش زنده به HTML تبدیل میکند و HTML را دوباره به Markdown برمیگرداند | یک README باید پیش از پوش شدن بررسی شود، یا محتوای وب باید به Markdown منتقل شود |
قالببندی و اعتبارسنجی JSON
JSON فشرده همان چیزی است که ماشینها میفرستند و انسانها نمیتوانند بخوانند. وقتی آن را در فرمتکنندهٔ JSON بچسبانید، تورفتگی میگیرد، ساختارش بهطور دیداری مرتب میشود و شکل داده آشکار میشود - کدام آرایه داخل کدام شیء است، null کجاست، و آیا آن عدد در واقع یک رشته است.
بخش اعتبارسنجی هم به همان اندازه مهم است. وقتی JSON تجزیه نمیشود، بیشتر ابزارها فقط میگویند نامعتبر است. یک فرمتکنندهٔ بهدردبخور موقعیت نویسه و علت را نام میبرد: یک ویرگول اضافه بعد از آخرین عنصر، یک نقلقول تکی جایی که JSON نقلقول دوتایی میخواهد، یک خط جدید بدون گریز داخل یک رشته، یا یک BOM سرگردان در ابتدای فایل. همین پنج مورد اکثریت قاطع خطاهای واقعی JSON را میسازند، و هر پنجتا وقتی با چشم دیوارهٔ متن را میکاوید نامرئیاند.
فشردهسازی همان عملیات در جهت معکوس است، و ارزش دارد پیش از آنکه دادهای را در یک دستور curl، یک متغیر محیطی یا ستونی از پایگاه داده بچسبانید که فضای خالی در آن وزن مرده است، انجامش دهید.
تبدیل میان JSON، YAML، CSV و XML
همان داده اغلب باید در قالبی دیگر جابهجا شود: JSON یک API به یک مانیفست YAML، یک آرایهٔ JSON به یک صفحهگسترده، خروجی CSV به ورودی JSON، یا XML یک سرویس قدیمی به چیزی که JavaScript بتواند با آن کار کند. مبدل JSON همهٔ اینها را یکجا انجام میدهد. JSON تودرتو هنگام رفتن به CSV به نام ستونهای نقطهدار مثل address.city تبدیل میشود، ویژگیهای XML کلیدهای @ میشوند، و ورودی خراب بهجای یک نتیجهٔ خالی، با شمارهٔ خط و ستون گزارش میشود.
مقایسهٔ دو نسخه از یک متن
وقتی فایلی تغییر کرده و باید دقیقاً بدانید چطور، خواندن دو نسخه کنار هم کند و غیرقابلاعتماد است. مقایسهٔ متن از همان الگوریتم مایرز (Myers) که Git به کار میبرد استفاده میکند تا کوچکترین مجموعهٔ خطهای اضافهشده و حذفشده را پیدا کند، و بعد کلمههای تغییرکرده را درون هر خط تغییرکرده علامت میزند. میتواند فاصلهها یا بزرگی و کوچکی حروف را نادیده بگیرد و نتیجه را بهصورت unified diffای کپی میکند که git apply آن را میپذیرد.
تست عبارتهای باقاعده پیش از رسیدن به محیط عملیاتی
عبارت باقاعده کدی است که بهطور غیرعادی آسان اشتباه نوشته میشود و بهطور غیرعادی سخت بعداً خوانده میشود. راه مطمئن نوشتنش این است که آن را روی متن نمونهٔ واقعی بسازید و ببینید تطبیقها همزمان چطور تغییر میکنند - دقیقاً کاری که تستر ریجکس برایش ساخته شده: چند خط نماینده بچسبانید، الگو را تایپ کنید، و بیدرنگ ببینید چه میگیرد و چه از دستش در میرود.
حالتهایی که ارزش دارد عمداً تست شوند همانهاییاند که بعداً گاز میگیرند. آیا الگو با خط خالی هم کار میکند؟ با فاصلهٔ انتهایی چطور؟ اگر همان تطبیق دو بار در یک خط بیاید، آیا پرچم g واقعاً هر دو را میگیرد؟ آیا . باید از خط جدید عبور کند و پرچم s را متناسب با آن گذاشتهاید؟ آیا شمارهگذاری گروههای ثبت همان است که فکر میکنید، بهمحض اینکه گروهی برای گروهبندی و نه برای ثبت اضافه کنید؟
حرص، دام کلاسیک است. <.*> روی <a>متن</a> کل رشته را میگیرد، نه اولین تگ را، چون * تا جایی که بتواند برمیدارد. <.*?> کمترین را برمیدارد و فقط <a> را میگیرد. دیدن این تفاوت بهصورت برجستهشده سریعتر از استدلال کردن دربارهٔ آن است.
جای این ابزارها در یک روز عادی
- یک اندپوینت کد ۲۰۰ برمیگرداند اما کلاینت میشکند: بدنه را قالببندی کنید، فیلد جاافتاده در چند ثانیه پیدا میشود.
- باید یک فیلد را از ده هزار خط لاگ بیرون کشید: اول الگو را روی پنج خط نمونه بسازید، بعد جدی اجرایش کنید.
- یک فایل تنظیمات هنگام استقرار رد میشود: بهجای پوش کردن یک کامیت دیگر برای فهمیدن علت، محلی اعتبارسنجیاش کنید.
- همکارتان دادهای را در چت میفرستد که خطوط جدیدش رفته: بچسبانید، قالببندی کنید، بخوانید.
- دارید قاعدهٔ اعتبارسنجی مینویسید و باید بدانید چه چیزی را میپذیرد، پیش از آنکه کاربرها شکاف را پیدا کنند.
چرا پردازش سمت کلاینت اصل ماجراست
بیشتر فرمتکنندههای آنلاین متن شما را با POST به سروری میفرستند، آنجا قالببندی میکنند و برمیگردانند. این یک انتقال داده است که معمولاً دلیلی برای انجامش ندارید و اغلب اجازهاش را هم ندارید. هر چیزی که نام مشتری، توکن دسترسی، نام میزبان داخلی یا شمای منتشرنشده در آن باشد، دقیقاً همان متنی است که نباید از دستگاه بیرون برود.
ابزارهای اینجا از تجزیهگر JSON و موتور عبارت باقاعدهٔ خود مرورگر استفاده میکنند، پس چیزی برای آپلود وجود ندارد. میتوانید بررسیاش کنید: تب شبکه را باز کنید، یک داده بزرگ بچسبانید، قالببندی کنید و ببینید که هیچ درخواستی فرستاده نمیشود. صفحه پس از یک بار بارگذاری، آفلاین هم کار میکند.
دستههای مرتبط
- ابزارهای کدگذاری - وقتی متن باید به Base64 یا کدگذاری درصدی تبدیل شود نه اینکه دوباره قالببندی شود.
- ابزارهای توسعهدهنده - هش، مهر زمانی، تبدیل رنگ و رمزگشایی JWT، که کار با متن از جنسی دیگر است.
- تولیدکنندهها - برای ساختن شناسه، رمز عبور و کد QR، بهجای دگرگون کردن متنی که از قبل دارید.
سه چیزی که اغلب اشتباه گرفته میشوند: قالببندی، اعتبارسنجی و فشردهسازی
قالببندی (یا زیباسازی) فقط فضای خالی را تغییر میدهد تا یک انسان بتواند ساختار را بخواند. اعتبارسنجی به یک پرسش بله یا خیر پاسخ میدهد - آیا این قابل تجزیه است - و وقتی پاسخ خیر است، میگوید کجا شکست. فشردهسازی هر بایتی را که تجزیهگر لازم ندارد حذف میکند. این سه از هم مستقلاند: JSON معتبر میتواند ناخوانا باشد و JSON خوانا میتواند نامعتبر باشد. یک فرمتکنندهٔ خوب هر سه را انجام میدهد، و به همین دلیل معمولاً اولین ابزاری است که یک برنامهنویس باز میکند.