
آموزش کار کردن با رشته ها و عبارات با قاعده (Regex) در سی شارپ 10
آموزش کار کردن با رشته ها و عبارات با قاعده (Regex) در سی شارپ 10 یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش کار کردن با رشته ها (String) و عبارات با قاعده (Regex) در سی شارپ 10 است که با نام اصلی String Manipulation and Regex in C# 10 از شرکت Pluralsight منتشر شده است.
عبارات باقاعده و یا Regular Expression ها چه هستند؟
از عبارات باقاعده و یا Regular Expression ها به منظور بررسی کردن اینکه آیا یک داده string با یک الگو و pattern تطبیق دارد یا نه استفاده می کنیم. کلاس Regex در زبان سی شارپ به منظور استفاده کردن از عبارات با قاعده در نظر گرفته شده است. این کلاس دارای متدها و پروپرتی های مختلفی برای پردازش کردن متون به منظور پیدا کردن الگوها و کاراکترهای مختلف است. با استفاده از کلاس Regex و عبارات با قاعده میتوانید دنباله ای از کاراکترها را جستجو کنید و وجود و یا عدم وجود دنباله و یا الگوی مورد نظرتان را در آنها بررسی کنید. یک الگو می تواند شامل اعداد، کاراکتر ها، عملگرها و دیگر داده ها باشدو از الگوها برای جستجو کردن رشته ها و یا محتوای فایل ها استفاده می کنیم. عبارات با قاعده کاربرد های زیادی دارند اما به طور کلی از آنها در اعتبار سنجی داده های ورودی، پردازش کردن و جستجو کردن رشته ها استفاده می شود. برای مثال اگر بخواهید صحت و اعتبار تاریخ تولد افراد، شماره ملی و یا کد پستی آن ها را بررسی کنید، میتوانید از عبارات با قاعده استفاده نمایید. علاوه بر این موضوع، عبارات با قاعده به منظور پیدا کردن تعداد رخداد یک زیر رشته، جایگزین کردن زیر رشته ها، بررسی فرمت های تاریخ، بررسی ایمیل های معتبر، بررسی فرمت های واحدهای ارزی و موارد مشابه مورد استفاده قرار می گیرد.
کلاس Regex در سی شارپ
همانطور که گفته شد می توانید از کلاس Regex در زبان برنامه نویسی سی شارپ به منظور کار کردن با عبارات با قاعده استفاده کنید. این کلاس کمک می کند تا بتوانید حجم زیادی از داده های متنی را به منظور پیدا کردن الگوی از کاراکتر ها جستجو کنید. با استفاده از این کلاس امکان استخراج کردن، ویرایش کردن، جایگزین کردن و حذف کردن زیر رشته ها در داده های متنی وجود دارد. کلاس Regex در زبان برنامه نویسی سی شارپ در یک namespace با نام System.Text.RegularExpressions تعریف شده است. در تابع سازنده این کلاس می توانید الگوی مورد نظر به منظور جستجو کردن رشته های مختلف را لحاظ کنید. کد زیر مثالی از اینجام این کار را نشان می دهد.
// Create a pattern for a word that starts with letter "M"
string pattern = @"b[M]w+";
// Create a Regex
Regex rg = new Regex(pattern);
در ادامه داده ای string که از نام افراد تشکیل شده است طبق کد زیر تعریف می گردد.

// Long string
string authors = "Mahesh Chand, Raj Kumar, Mike Gold, Allen O'Neill, Marshal Troll";
پس از آن، طبق کد زیر، از متد Matches برای پیدا کردن تمام موارد مطابق با الگوی تعریف شده استفاده می گردد.
MatchCollection matchedAuthors = rg.Matches(authors); // Get all matches
و نهایتاً با یک حلقه foreach موارد یافته شده پیمایش می گردند و در خروجی نمایش داده می شوند.
// Print all matched authors
for (int count = 0; count & lt; matchedAuthors.Count; count++)
Console.WriteLine(matchedAuthors[count].Value);
مقایسه، جستجو و مرتبسازی رشتهها در C# 10
هنگام پردازش متن در برنامههای C#، مقایسه دو رشته همیشه به معنای بررسی ساده یکسان بودن حروف نیست؛ تنظیمات فرهنگ برنامه نیز میتواند بر نتیجه مقایسه و مرتبسازی اثر بگذارد. این آموزش به بررسی `String Equality` و روشهای مقایسه رشتهها میپردازد و نحوه جستجوی متن با ابزارهایی مانند `Contains` را پوشش میدهد. همچنین با تأثیر `Application Culture` آشنا میشوید تا هنگام مرتبسازی نامها، بررسی ورودی کاربران یا مقایسه دادههای متنی، تفاوت میان مقایسههای وابسته به فرهنگ و مقایسههای دقیق را بهتر درک کنید.
در کنار جستجوی مستقیم، آموزش روشهایی برای مدیریت فاصلههای اضافی و تغییر ساختار متن با استفاده از `Regex` ارائه میکند. برای مثال، میتوان از الگوها برای شناسایی یا جایگزینی بخشهایی از رشته استفاده کرد که با یک قالب مشخص مطابقت دارند. همچنین، موضوع گروهها و `Subexpression`ها بررسی میشود تا بتوانید بخشهای خاصی از متن را جداگانه پردازش کنید. این مهارتها هنگام اعتبارسنجی ورودیها، استخراج اطلاعات از متن و پاکسازی دادههای دریافتی کاربرد دارند؛ البته انتخاب روش مناسب باید با توجه به پیچیدگی الگو و نیاز واقعی برنامه انجام شود.
قالببندی رشتهها و بهینهسازی پردازش متن با StringBuilder
تبدیل انواع داده به متن، زمانی که خروجی باید قالب مشخصی داشته باشد، به انتخاب روش مناسب قالببندی نیاز دارد. در این آموزش با `String Interpolation` و قالببندی انواع مختلف داده در قالب رشته آشنا میشوید و یاد میگیرید چگونه مقادیر را در متن خروجی قرار دهید. مباحث پردازش و `Parse` کردن رشتهها نیز به شما کمک میکنند دادههای متنی را به مقادیر موردنیاز برنامه تبدیل کنید. این موضوع هنگام خواندن ورودی، آمادهسازی پیامها و تولید خروجیهایی با قالب قابلکنترل اهمیت دارد و در کنار مدیریت فرهنگ برنامه، از برداشت نادرست از مقادیر جلوگیری میکند.
در سناریوهایی که یک رشته بارها تغییر میکند یا از بخشهای متعددی ساخته میشود، توجه به کارایی اهمیت بیشتری پیدا میکند. آموزش کار با `StringBuilder` نشان میدهد چگونه میتوان برای ساخت رشتههای متغیر از ابزاری متناسب با این نوع عملیات استفاده کرد. در مقابل، برای اتصال ساده چند مقدار یا ساخت متنهای کوتاه، روشهایی مانند `String Interpolation` ممکن است خواناتر باشند. آموزش همچنین به بهینهسازی و امنیت `Regex` میپردازد؛ موضوعی که هنگام پردازش ورودیهای پیچیده اهمیت دارد، زیرا الگوهای نامناسب میتوانند باعث افت عملکرد شوند. در نتیجه، انتخاب ابزار بر اساس نوع عملیات بخش مهمی از طراحی کد متنی است.
سرفصل مطالب آموزش ویدئویی کار کردن با رشته ها و عبارات با قاعده (Regex) در سی شارپ 10
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: معرفی String ها و عبارات با قاعده
- معرفی و مقدمه
- معرفی String ها
- مبحث غیرقابل تغییر بودن و یا Immutability مربوط به String ها
- بررسی Character Encoding
- مقدمه ای برعبارات با قاعده و یا Regular Expression ها
- معرفی کردن حوزه مربوط به اپلیکیشن این دوره آموزشی
- معرفی کردن اپلیکیشن مربوط به این دوره آموزشی
فصل سوم: کار کردن با String ها
- بررسی Globalization
- کار کردن با Application Culture
- اعتبار سنجی کردن و یا Validate کردن String ها
- Escape کردن کاراکتر ها در String ها
- ایجاد کردن String Literal های Verbatim
فصل چهارم: پردازش کردن و Parse کردن String ها
- آماده سازی برای پردازش کردن String ها
- انتصاب دادن String های خالی و یا Empty
- تکه تکه کردن و یا Split کردن String ها
- Parse کردن String ها
فصل پنجم: استفاده کردن از عبارات باقاعده و یا Regular Expression ها
- نکات مربوط به زمان مناسب، استفاده کردن از Regex
- استفاده کردن از Anchor ها
- استفاده کردن از Character Class ها
- استفاده کردن از Quantifier ها
- استفاده کردن از Group ها و Subexpression ها
- تطابق دادن و یا مچ کردن یک متن با استفاده از Regex
- کنترل کردن روال Capturing
فصل ششم: استفاده کردن از مقایسه String ها و مرتب سازی آن ها
- اعتبارسنجی مقادیر String
- بررسی تصاوی و یا Equality در String ها
- تطابق کردن و یا مچ کردن چندین دفعه با استفاده از Regex
- استفاده کردن از TryParseExact
- استفاده کردن از String.Compare
- بهینه سازی و امنیت در Regex
- مرتب سازی رشته ها
- مرتب سازی رشته ها با در نظر گرفتن Culture
فصل هفتم: استفاده از تکنیک هایی برای جستجوی رشته ها
- استفاده کردن از StartsWith
- استفاده کردن از Contains
- استخراج داده ها با استفاده از Substring
- تکنیک های جستجوی بهینه که Allocation و یا تخصیص حافظه کمتری دارند
فصل هشتم: استفاده کردن از تکنیک هایی برای تغییر دادن رشته ها
- از بین بردن و یا Trim کردن فضای خالی و یا Whitespace و تبدیل کردن Case در رشته ها
- هندل کردن Whitespace با استفاده از Regex
- جایگزینی و حذف کاراکترها
- استفاده از Lookaround ها در Regex
فصل نهم: استفاده کردن از تکنیک هایی برای ترکیب و فرمت بندی String ها
- الحاق کردن و یا Concatenate کردن داده ها با استفاده از عملگر ها
- فرمت بندی کردن Typeهای مختلف در قالب String
- استفاده از Composite Formatting در کار کردن با String ها
- بررسی کامپوننت مربوط به Format String
- الحاق کردن و Join کردن String ها
- کار کردن با String Interpolation
فصل دهم: استفاده کردن از StringBuilder برای کار کردن با String ها بصورتی کارآمدتر
- شروع به کار با StringBuilder
- بررسی کارایی و یا پرفورمنس مربوط به StringBuilder
- بررسی جزئیات پیاده سازی مربوط به StringBuilder
- بهینه سازی استفاده کردن از StringBuilder
- استفاده کردن از Multiline Mode در Regex
- افزودن و حذف کردن داده ها با استفاده از StringBuilder
- جمع بندی







