برنامه نویسی

دنباله فرار جدید \e – انجمن DEV

قبل از صحبت در مورد سکانس فرار جدید، لازم دیدم درباره مفهومی بگویم که برایم تازگی دارد.
تا به امروز، در بسیاری از زبان های برنامه نویسی، به ویژه سی شارپ، کاراکتر فرار (شخصیت) و دنباله فرار (توالی) دو متفاوت از یکدیگر، اما من سعی خواهم کرد تا حد امکان به طور خلاصه توضیح دهم که تفاوت بین مفاهیم نزدیک چیست.
شخصیت فرار (belgi) deb \ بک اسلش گفته شده است. چرا این لازم است؟! این راز نیست که نقل قول های دوگانه است "" و بک اسلش \، آنها شخصیت های خاص محسوب می شوند string ما نمی توانیم آن را فقط در یک نوع مرجع ذخیره کنیم. این به این دلیل است که این نمادها برای اهداف متفاوتی در کامپایلر استفاده می شوند.

مثال:

// error
string str1 = "Shoqasim "yaxshi" bola";
string str2 = "Shoqasim \yaxshi\ bola";
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این کد ما است که خطا می دهد، برای جلوگیری از این خطا، ما \ escape -> نماد فرار کمک می کند (راه فرار از خطا را باز می کند).

مثال:

string str1 = "Shoqasim \"yaxshi\" bola"; 
string str2 = "Shoqasim \\yaxshi\\ bola";

Console.WriteLine(str1); --> Shoqasim "yaxshi" bola
Console.WriteLine(str2); --> Shoqasim \yaxshi\ bola
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همانطور که در مثال دیدیم نقل قول های دوگانه " یا خط عقب
\ ما کاراکترها را بدون خطا نگه داریم شخصیت فرار کمک کرد. اما یک چیز دیگر را باید در اینجا اضافه کرد \"، یا \\ شخصیت ها، اما نه دیگر شخصیت فرار دنباله فرار نامیده میشود منظور من از این این است که شخصیت فرار همیشه یکی است بک اسلش \، و این \ شخصیت به شما اجازه می دهد تا دنباله های فرار ایجاد کنید. انواع مختلفی از توالی فرار وجود دارد که رایج ترین آنها عبارتند از: \"، \\، \n، \t، \r و دیگران. این سکانس ها برای ما string به قالب بندی مقادیر به روش های مختلف کمک می کند. برای مثال های بیشتر -> پیوند.

حالا شخصیت اصلی این پست \e بریم سراغ سکانس فرار. این سکانس جدید مربوط به نسخه 13 است در رفتن نشان دهنده شخصیت (بیست و هفتمین با توجه به جدول ASCII). \x1b انتظار می رود دنباله جایگزین شود.
من سعی خواهم کرد به این سوال پاسخ دهم که این نماد در کد به چه معناست.

Console.WriteLine("\x1b");
// output -> Bo'm-bo'sh bolib qoladi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

دلیل اینکه چیزی در خروجی ظاهر نمی شود این است که x1b نماد (ESC) اساساً متنی است که باید به کنسول خروجی شود دستکاری – اعمال نفوذ برای انجام (تغییر رنگ، تغییر فرمت و غیره…) استفاده می شود.

مثال:

Console.WriteLine("\x1b[31mHello \x1b[0mWorld!");
// output -> Hello(qizil rangda)  World!(defolt rangda)
Console.WriteLine("\x1bHello \x1bWorld!");
// output -> ello orld! birinchi harflar o'chib ketadi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حتی مایکروسافت در مستنداتش \x1b توصیه به استفاده نمی کند. دلیلش این است 1b مقادیر به دنبال دنباله هگزادسیمال ممکن است برابر با مقدار سیستم اعداد باقی بماند و ممکن است نتایج غیرمنتظره ای ایجاد کند.

مثال:

Console.WriteLine("\x1b12");
// output -> ? belgisi
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

به منظور جلوگیری از چنین خطاهای غیر منتظره، مایکروسافت \x1b sequensini \e می خواهد تغییر کند برای شروع یک سکانس جدید تردید نکنید \e12 به هیچ وجه قابل استفاده است ? نماد ظاهر نمی شود سیستم قالب بندی مانند توالی قبلی باقی می ماند.

مثال:

Console.WriteLine("\e12");
// output -> 2
Console.WriteLine($"\e[31m123\e[0m456");
123(qizil rangda) 456 (defolt rangda)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا