فصل 10 از 40 درس 1 از 1

رشته‌ها و پردازش متن

رشته‌ها و پردازش متن

بخشی از آموزش جامع C# و .NET 10

محتوای درس رشته‌ها و پردازش متن

string یکی از پرکاربردترین Typeهای C# است. درک تغییرناپذیری رشته، جست‌وجو، برش، جایگزینی، تفکیک و استفاده از StringBuilder در کارایی و خوانایی برنامه اثر مستقیم دارد.

۱. ویژگی‌های string

string یک Reference Type تغییرناپذیر است؛ هر عملیات ظاهراً تغییردهنده در واقع رشته جدیدی تولید می‌کند.

مثال

string text="Hello";
         string upper=text.ToUpper();
         Console.WriteLine($"{text} / {upper}");

در این مثال، مفهوم «ویژگی‌های string» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۲. جست‌وجو و مقایسه

Contains، StartsWith، EndsWith و IndexOf برای جست‌وجو استفاده می‌شوند. در مقایسه متن باید حساسیت به حروف و Culture آگاهانه انتخاب شود.

مثال

string text="ASP.NET Core";
         Console.WriteLine(text.Contains("Core"));
         Console.WriteLine(string.Equals("admin","ADMIN",StringComparison.OrdinalIgnoreCase));

در این مثال، مفهوم «جست‌وجو و مقایسه» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۳. برش و پاک‌سازی

Substring، Range، Trim و Replace برای استخراج و پاک‌سازی متن کاربرد دارند.

مثال

string input="  CSharp Course  ";
         Console.WriteLine(input.Trim().Substring(0,6));

در این مثال، مفهوم «برش و پاک‌سازی» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۴. Split و Join

Split متن را به بخش‌ها تبدیل می‌کند و Join عناصر یک مجموعه را با جداکننده مشخص ترکیب می‌کند.

مثال

string[] parts="Ali,Sara,Reza".Split(',');
         Console.WriteLine(string.Join(" | ",parts));

در این مثال، مفهوم «Split و Join» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۵. StringBuilder

برای ساخت رشته در حلقه یا تغییرات متعدد، StringBuilder از تولید تعداد زیاد شیء موقت جلوگیری می‌کند.

مثال

var sb=new System.Text.StringBuilder();
         for(int i=1;i<=3;i++) sb.AppendLine($"Row {i}");
         Console.WriteLine(sb);

در این مثال، مفهوم «StringBuilder» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۶. Interpolation و Raw String

Interpolation خوانایی ترکیب مقادیر را افزایش می‌دهد و Raw String Literal برای متن چندخطی یا محتوای دارای Quote مناسب است.

مثال

string json = """{ "name": "C#" }""";
         Console.WriteLine(json);

در این مثال، مفهوم «Interpolation و Raw String» در یک قطعه کد مستقل نمایش داده شده است. مقدارها و نام‌ها عمداً ساده انتخاب شده‌اند تا رفتار اصلی قابل مشاهده باشد؛ در پروژه واقعی همین الگو با مدل دامنه، اعتبارسنجی و مدیریت خطای متناسب ترکیب می‌شود.

۷. مثال‌های عملی

string input = "  C# Programming  ";
         string normalized = input.Trim().ToLowerInvariant();
         Console.WriteLine(normalized.Contains("c#"));

این نمونه عملی چند مفهوم فصل را در کنار هم قرار می‌دهد و برای مشاهده رفتار واقعی کد قابل اجرا و تغییر است.

var builder = new StringBuilder();
         for (int i = 1; i <= 3; i++)
         {
             builder.AppendLine($"Item {i}");
         }
         Console.WriteLine(builder.ToString());

این نمونه عملی چند مفهوم فصل را در کنار هم قرار می‌دهد و برای مشاهده رفتار واقعی کد قابل اجرا و تغییر است.

۸. خطاهای رایج

• ساخت رشته بزرگ با + داخل حلقه

• مقایسه متن بدون انتخاب StringComparison مناسب

• فرض Mutable بودن string

۹. نکات اجرایی

• نام‌ها، Typeها و Methodها را متناسب با مفهوم دامنه و بدون ابهام انتخاب کنید.

• هشدارهای کامپایلر و Nullable را بدون بررسی خاموش نکنید.

• منطق هر بخش را تا حد امکان کوچک، قابل تست و مستقل از I/O غیرضروری نگه دارید.

۱۰. تمرین عملی

متنی دریافت کنید، فاصله‌های ابتدا و انتها را حذف کنید، تعداد کلمات را محاسبه و نسخه استانداردشده را نمایش دهید.

۱۱. جمع‌بندی

در این فصل، مبانی «رشته‌ها و پردازش متن» با تمرکز بر ساختارهای اصلی زبان، الگوهای صحیح استفاده و خطاهای رایج بررسی شد. تسلط بر این مفاهیم زمینه لازم برای اتصال موضوع به فصل‌های بعدی و طراحی کدهای خواناتر، قابل نگهداری و قابل تست را فراهم می‌کند.