رشتهها و پردازش متن
رشتهها و پردازش متن
بخشی از آموزش جامع 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 غیرضروری نگه دارید.
۱۰. تمرین عملی
متنی دریافت کنید، فاصلههای ابتدا و انتها را حذف کنید، تعداد کلمات را محاسبه و نسخه استانداردشده را نمایش دهید.
۱۱. جمعبندی
در این فصل، مبانی «رشتهها و پردازش متن» با تمرکز بر ساختارهای اصلی زبان، الگوهای صحیح استفاده و خطاهای رایج بررسی شد. تسلط بر این مفاهیم زمینه لازم برای اتصال موضوع به فصلهای بعدی و طراحی کدهای خواناتر، قابل نگهداری و قابل تست را فراهم میکند.