در زبان سی شارپ و بقیه زبان های برنامه نویسی، رشته از تعدادی کاراکترهای Unicode تشکیل شده است. متن درون رشته می تواند یک کاراکتر، یک کلمه یا یک متنی طولانی باشد که درون جفت کوتیشن ها قرار گرفته است. برای مثال، سه نمونه زیر هر سه رشته هستند:
ایجاد رشته ها در سی شارپ
شما می توانید با استفاده از روش های زیر یک رشته را ایجاد کنید:
- اختصاص دادن یک متغیر برای رشته
- استفاده از عملگر + برای اتصال رشته ها
- با استفاده از فرخوانی متد رشته ها برای تبدیل کردن یک متغیر به رشته
سی شارپ یک نوع داده رشته برای ذخیره کردن رشته ها تعریف کرده است. همانطور که در مثال زیر می بینید، یک متغیر از نوع رشته می تواند تعریف شده و سپس به آن یک رشته اختصاص داده شود.
اندازه حداکثری برای یک شی رشته در حافظه 2 گیگ یا چیزی حدود 1 میلیارد کاراکتر می باشد، اما در عمل این اندازه به Ram و پردازنده سیستم کاربر وابسته می باشد. در سی شارپ برای تعریف کردن یک متغیر از نوع رشته می توانید از کلمه کلیدی string استفاده کنید.
از آنجا که رشته در سی شارپ، مجموعه یا آرایه ای از کاراکترهای مختلف می باشد، رشته ها می توانند با استفاده از آرایه char ایجاد شده و یا مانند یک آرایه char به آن ها دسترسی داشت.
کاراکترهای خاص
یک متن در دنیای واقعی می تواند شامل هر کاراکتری باشد. اما در سی شارپ رشته ای که با دو جفت کوتیشن احاطه شده است نمی تواند درون یک رشته دیگر قرار بگیرد. همانطور که در مثال زیر می بینید اینکار نادرست است . زیرا نقل قول ها برای مشخص کردن شروع و انتهای یک رشته و معرفی رشته به کامپایلر استفاده می شود.
سؤال این است که چگونه می توانید از این نقل قول ها در داخل خود رشته استفاده کنیم؟
سی شارپ دارای یک کاراکتر بک اسلش (\) می باشد که با استفاده از آن قبل یکسری از کاراکترهای خاص می توانید آن ها را درون یک رشته قرار دهید.
به عبارت دیگر، ما به سادگی از \ قبل از نقل قول های دوتایی درون رشته استفاده می کنیم، تا نشان دهیم که این بخش انتهای رشته نیست و ما در واقع می خواهیم از نقل قول دوتایی درون رشته استفاده کنیم.
سی شارپ دارای یکسری کاراکترهای کنترلی (escaping character) می باشد که با استفاده از این کاراکترهای کنترلی می توانید فرمت یا الگوی نمایش یک رشته را در پنجره کنسول مشخص کنید. برای اینکار شما باید از یک بک اسلش (\) قبل از کاراکترهای کنترلی استفاده کنید مانند n ،\t\ و ... .
به عنوان مثال \n یک خط جدید ایجاد می کند، \t به اندازه یک tab فاصله ایجاد می کند.
اما همانطور که متوجه شدید اینکه برای هر کاراکتر خاص از یک \ به عنوان پیشوند استفاده کنیم خیلی خسته کننده خواهد بود. به عنوان یک جایگزین قرار دادن یک علامت @ برای رشته باعث می شود که رشته به عنوان متن (رشته معمولی) تعریف شود.
شما همچنین می توانید از @ و \ استفاده کرده تا یک رشته چند خطی را تعریف کنید.
نکته: برای استفاده از جفت کوتیشن در رشته فقط از بک اسلش (\) استفاده کنید. @ فقط برای کاراکترهای خاص در سی شارپ می باشد.
الحاق رشته در سی شارپ
با استفاده از عملگر + چندین رشته می توانند به یکدیگر متصل شوند.
رشته در سی شارپ یک عنصر غیرقابل تغییر می باشد. به این معنا که بعد از اینکه یک رشته در حافظه ایجاد شد نمی تواند تغییر داده شود. هر بار که شما رشته ها را به هم الحاق می کنید، .NET CLR یک فضای حافظه جدید برای رشته های متصل شده می سازد و به همین دلیل پیشنهاد می شود که اگر قصد متصل کردن بیشتر از 5 رشته را دارید، به جای رشته از StringBuilder استفاده کنید.
الحاق رشته ها (روش جدید)
الحاق رشته به روش زیر، روش بهتری برای متصل کردن رشته ها می باشد.
در زبان C# نسخه 6 می توان از یک کاراکتر ($) برای شناساندن رشته هایی که قرار است بهم متصل شوند استفاده کرد. رشته متصل شده به این روش ترکیبی از رشته استاتیک و متغیر رشته می باشد و متغیرهای رشته درون آکولاد قرار می گیرند.
در مثال بالا، علامت $ نشان دهنده رشته الحاق شده می باشد و علامت های {} شامل متغیرهای رشته ای برای الحاق شدن به یک رشته می باشد. در حقیقت {} به عنوان یک جانگهدار عمل می کنند و به جای آن ها باید مقدار متغیر درون آن ها در رشته قرار گیرد.
ویژگی رشته ها در سی شارپ
- رشته های سی شارپ شی هستند.
- رشته ها از نوع داده های ارجاعی هستند.
- رشته ها غیرقابل تغییر هستند.
- رشته ها می توانند null باشند.
رشته های سی شارپ شئ هستند
رشته ها نمونه هایی از کلاس های System.String یا System.Text.StringBuilder می باشند. از آنجا که رشته ها شی هستند، چندین متد برای انجام دادن کار متفاوت با رشته ها وجود دارد که ما در مقاله بعدی به طور مفصل راجع به این متدهای رشته در سی شارپ صحبت می کنیم.
رشته ها غیرقابل تغییر هستند
همانطور که گفته شد بعد از اینکه رشته ای را به وجود آوردیم، نمی توانیم آن را تغییر دهیم. تمام متدهای رشته و عملگرهای سی شارپ که به منظور اصلاح یک رشته به وجود می آیند، جواب ها را در یک رشته جدید برمی گردانند. در مثال پایین، وقتی محتویات رشته های s1 و s2 به یک رشته واحد تبدیل شدند، دو رشتۀ اصلی هنوز اصلاح نشده اند. عملگر += یک رشته جدید برمی گرداند که شامل محتویات ترکیب شده می باشد. شی جدید ایجاد شده به متغیر s1 اختصاص داده می شود و شی اصلی که به s1 اختصاص داده شده بود به دلیل اینکه هیچ ارجاعی به متغیرهای دیگر ندارد توسط سیستم عامل حذف شده و اصطلاحا به garbage collection می رود.
به این دلیل که اصلاح رشته در حقیقت ساخت یک رشته جدید است، شما باید در هنگام به وجود آوردن ارجاعات به رشته ها مراقب باشید. زمانی که شما به یک متغیر رشته ای ارجاعی می دهید و سپس رشته اصلی را اصلاح می کنید، رشته ارجاع داده شده همچنان به شی اصلی مرتبط است و شامل تغییرات جدید رشته اصلی نمی شود. کد زیر این مسئله را نشان می دهد:
رشته های (Null) و رشته های خالی (Empty)
یک رشته خالی نمونه ای از یک شی System.String بوده که شامل هیچ کاراکتری نمی باشد. رشته های خالی در کد نویسی اغلب در زمان هایی استفاده می شوند که می خواهید یک فیلد خالی را نشان دهید. می توان به شکل زیر به رشته های خالی مقدار اولیه داد:
از سوی دیگر، یک رشته null به هیچ نمونه ای از شی System.String اشاره نمی کند و هر گونه تلاش برای فراخوانی یک متد به رشته null می تواند باعث پیام خطای NullReferenceException شود. در هر صورت، شما می توانید از رشته های null در عملیات های اتصال و مقایسه با رشته های دیگر استفاده کنید. مثال های زیر چند نمونه که در آن ها ارجاع به رشته null موفقیت آمیز بوده و یا با شکست مواجه شده است را نشان می دهد.
مشخصه های کلاس String
اصلی ترین کاربرد کلاس رشته فراهم کردن مشخصه ها و متدهایی برای آسانی کار با رشته ها می باشد.
کلاس رشته دو مشخصه زیر را دارد:
Chars: کاراکتر موجود در اندیس مشخص شده را باز میگرداند. برای نمونه str[2] کاراکتری که در خانه سوم قرار دارد را باز میگرداند.
مثال:
Length: به منظور بدست آوردن تعداد کاراکترها در رشته فعلی به کار می رود. مثال: