رشته ها در سی شارپ – معرفی متدهای String

تصویر شاخص رشته ها در سی شارپ

در زبان برنامه‌نویسی سی‌شارپ #C، رشته یا «string» یک دنباله‌ای از کاراکترهای یونیکد است که به‌صورت آرایه‌ای از کاراکترها نیز در نظر گرفته می‌شود. دامنه کاراکترهای یونیکد از U+0000 تا U+FFFF متغیر است. از آنجا که آرایه‌ای از کاراکترها به‌عنوان متن شناخته می‌شود، می‌توان رشته را نمایشی از متن دانست. رشته‌ها در برنامه‌نویسی نقش مهمی ایفا می‌کنند و گاهی اوقات این سؤال پیش می‌آید که آیا رشته‌ها یک کلمه کلیدی هستند، یک شیء به‌حساب می‌آیند، یا یک کلاس محسوب می‌شوند. در این مقاله قصد داریم رشته ها در سی شارپ را به‌طور شفاف بررسی کنیم.

مقدمه

رشته‌ها یا «Strings» از اساسی‌ترین و پرکاربردترین نوع داده‌ها در برنامه‌نویسی محسوب می‌شوند و برای ذخیره و مدیریت داده‌های متنی در بسیاری از زبان‌های برنامه‌نویسی، از جمله #C، استفاده می‌شوند. در سی‌شارپ، رشته‌ها به‌عنوان اشیائی از کلاس System.String مدیریت می‌شوند و ویژگی‌های خاصی دارند که آن‌ها را از سایر انواع داده متمایز می‌کند. یکی از مهم‌ترین ویژگی‌های رشته ها در سی شارپ این است که از نوع Reference Type هستند و هرگونه تغییر در مقدار آن‌ها باعث ایجاد یک رشته جدید می‌شود.

این مقاله از سری مقالات آموزشی پی استور با هدف ارائه یک درک عمیق از عملکرد رشته ها در سی شارپ #C و نحوه استفاده بهینه از آن‌ها تدوین شده است. در ادامه، ویژگی‌های کلیدی رشته‌ها، روش ایجاد و استفاده از آرایه‌های رشته‌ای، و عملیات مختلفی که می‌توان بر روی رشته‌ها انجام داد، بررسی خواهد شد. همچنین به نکاتی مانند مدیریت کاراکترهای null و نحوه ذخیره‌سازی رشته‌ها در حافظه خواهیم پرداخت.

رشته ها در سی شارپ

رشته‌ها در سی‌شارپ توسط کلاس System.String پیاده‌سازی شده‌اند. کلیدواژه string در واقع یک نام مستعار برای کلاس System.String است. بنابراین، می‌توانید از کلمه String یا string برای تعریف رشته‌ها استفاده کنید؛ هر دو به یک مفهوم اشاره دارند و معادل یکدیگر هستند. در نتیجه، رشته ها در سی شارپ به‌عنوان اشیائی از کلاس System.String شناخته می‌شوند.

مثال

// creating the string using string keyword
string s1 = “ProgramStore”;  


// creating the string using String class
String s2 = “PsT”;  


// creating the string using String class
System.String s3 = “PStore”;  

در کتابخانه پایه‌ی NET.، کلاس String تعریف شده است که برای نمایش و مدیریت رشته‌ها استفاده می‌شود. به‌عبارت دیگر، یک شیء از نوع String مجموعه‌ای ترتیبی از اشیاء System.Char است که یک رشته متنی را تشکیل می‌دهند. حداکثر اندازه‌ی یک شیء String در حافظه برابر با ۲ گیگابایت یا حدود ۱ میلیارد کاراکتر است که محدودیت قابل توجهی برای استفاده در پردازش‌های متنی بزرگ محسوب می‌شود.

برنامه: قطعه کد زیر، به معرفی انواع مختلفی از اعلان و مقداردهی متغیرهای نوع string در زبان سی شارپ می‌پردازد.

// C# program to declare string using
// string, String and System.String
// and initialization of string
using System;

class ProgramStore 
{
    // Main Method
    static void Main(string[] args)
    {
        // declare a string Name using 
        // "System.String" class
        System.String Name;
        
        // initialization of String
        Name = "PStore";

        // declare a string id using 
        // using an alias(shorthand) 
        // "String" of System.String
        // class
        String id;
        
        // initialization of String
        id = "33";

        // declare a string mrk using 
        // string keyword
        string mrk;
        
        // initialization of String
        mrk = "97";
        
        // Declaration and initialization of
        // the string in a single line
        string rank = "1";

        // Displaying Result
        Console.WriteLine("Name: {0}", Name);
        Console.WriteLine("Id: {0}", id);
        Console.WriteLine("Marks: {0}", mrk);
        Console.WriteLine("Rank: {0}", rank);
    }
}

خروجی

Name: PStore
Id: 33
Marks: 97
Rank: 1

ویژگی های کلیدی رشته ها در سی شارپ

رشته ها در سی شارپ دارای ویژگی‌های منحصربه‌فردی هستند که آن‌ها را از سایر انواع داده متمایز می‌کند:

  • تغییرناپذیر «Immutable»: پس از ایجاد، محتوای یک رشته نمی‌تواند تغییر کند. هر تغییری منجر به ایجاد یک رشته جدید می‌شود.
  • نوع ارجاعی «Reference Type»: رشته‌ها نوع ارجاعی هستند، اما در برخی موارد مانند مقایسه، مانند نوع مقداری رفتار می‌کنند.
  • پشتیبانی از یونیکد «Unicode Support»: رشته‌ها می‌توانند حاوی هر کاراکتر یونیکد باشند و از چندین زبان پشتیبانی می‌کنند.
  • تهی و تهی تعبیه‌شده «Null and Embedded Nulls»: رشته‌ها می‌توانند تهی (null) باشند و همچنین ممکن است شامل کاراکترهای تهی تعبیه‌شده (\۰) باشند.
  • بارگذاری عملگرها «Operator Overloading»: رشته‌ها از بارگذاری عملگرها پشتیبانی می‌کنند، مانند عملگر + برای الحاق و == برای مقایسه.

ویژگی های کلاس String

کلاس System.String دارای چندین ویژگی داخلی مفید است، از جمله:

  • Chars: این ویژگی به شما اجازه می‌دهد به یک کاراکتر خاص در موقعیت مشخصی از رشته دسترسی داشته باشید.
  • Length: این ویژگی تعداد کاراکترهای موجود در یک رشته را برمی‌گرداند.

خواندن رشته از ورودی کاربر

یک رشته می‌تواند از ورودی کاربر خوانده شود. متد ()ReadLine از کلاس Console برای خواندن یک رشته از ورودی کاربر استفاده می‌شود.

مثال: برنامه #C زیر برای خواندن ورودی از کاربر و نمایش آن استفاده می‌شود.

// C# program to demonstrate Reading 
// String from User-Input
using System;

class ProgramStore 
{    
    // Main Method
    static void Main(string[] args)
    {

        Console.WriteLine("Enter the String");
    
        // Declaring a string object read_user 
        // and taking the user input using 
        // ReadLine() method
        String read_user = Console.ReadLine();
    
        // Displaying the user input
        Console.WriteLine("User Entered: " + read_user);

    }
    
}

ورودی

 Enter the String
Hello PStore !

خروجی

 User Entered: Hello PStore !

ایجاد رشته ها در سی شارپ #C

در سی‌شارپ، روش‌های متعددی برای ایجاد رشته‌ها وجود دارد که برخی از آن‌ها در ادامه توضیح داده می‌شود.

متد ساختار یا مثال
یک رشته از یک literal ایجاد کنید ;”string str = “ProgramStore
یک رشته با استفاده از الحاق ایجاد کنید ;”string str = str1 + “data
یک رشته با استفاده از سازنده ایجاد کنید یک رشته از یک آرایه کاراکتری ایجاد کنید//
;char[] chars = { ‘G’, ‘E’, ‘E’, ‘K’, ‘S’ }
;string str = new string(chars)
یک رشته با استفاده از یک ویژگی یا یک متد ایجاد کنید شروع و پایان ایندکس برای شاخص str هستند//
;string substr = str.Substring(start, end)
یک رشته با استفاده از قالب بندی ایجاد کنید

string str = string.Format(“{۰} {۱} Cars color ” + “are {2}”, no.ToString(), cname, clr);

مثال: برنامه #C زیر به شما نشان می‌دهد که چگونه می‌توان رشته‌ها را به روش‌های مختلف ایجاد کرد.

// Different Methods for Creating
// String in C#
using System;

public class Pstore
{
      // Main Method
    static public void Main ()
    {
      
          // Creating String using string literal
        String str = "Program";
          Console.WriteLine("Method 1: " + str);
      
          // Creating String using concatenation
          String str2 = str + "Store";
          Console.WriteLine("Method 2: " + str2);
          
          // Creating a string using a constructor
          char[] chars = { 'P', 'S', 't', 'o', 'r' };
          string str3 = new string(chars);
          Console.WriteLine("Method 3: " + str3);
          
          // Creating a string using a property or a method
          String s = "program and Store";
          
          // Index of 
        int start = s.IndexOf(" ") + 1;
          int end = s.IndexOf(" ", start) - start;
          string str4 = s.Substring(start, end);
          Console.WriteLine("Method 4: " + str4);
      
          // Creating a string using formatting
          int i=1;
          int j=2;
          int sum= i + j;
          String str5 = string.Format("Addition of {0} with {1} is {2}"
                                    , i , j , sum );
          Console.WriteLine("Method 5: " + str5);
          
    }
}

خروجی

Method 1: Program
Method 2: ProgramStore
Method 3: PStor
Method 4: and
Method 5: Addition of 1 with 2 is 3

توضیحات: روش‌هایی که در مثال بالا استفاده شده است.

  • روش اول: استفاده از رشته‌های ساده «String Literal».
  • روش دوم: اتصال رشته‌ها «Concatenation» با استفاده از عملگر +.
  • روش سوم: استفاده از سازنده «Constructor» برای ساخت رشته از آرایه‌های کاراکترها.
  • روش چهارم: استفاده از متدها مانند Substring برای استخراج بخش‌هایی از یک رشته.
  • روش پنجم: استفاده از فرمت‌بندی رشته‌ها «String Formatting» با string.Format برای درج متغیرها داخل رشته‌ها.

این روش‌ها کاربردهای مختلفی دارند و بسته به نیاز شما می‌توانید از آن‌ها استفاده کنید.

عملیات رشته در سی شارپ #C

عملیات رشته در سی‌شارپ شامل مجموعه‌ای از روش‌ها و قابلیت‌ها برای مدیریت و پردازش رشته‌ها (متن‌ها) است. رشته‌ها در سی‌شارپ با استفاده از کلاس String در فضای نام System تعریف می‌شوند. رشته‌ها در سی‌شارپ تغییرناپذیر هستند «Immutable»، به این معنی که هر بار که یک رشته تغییر می‌کند، نسخه جدیدی از آن ساخته می‌شود.

در ادامه عملیات رشته‌های میانجی «Interpolation» و عملیات Trim، Replace و Concatenate روی رشته‌ها  با مثال توضیح داده شده است:

عملیات میانجی‌گری رشته

رشته‌های میانجی به شما اجازه می‌دهند مقادیر متغیرها را مستقیماً درون یک رشته جایگذاری کنید. از علامت دلار ($) قبل از یک رشته برای فعال کردن این ویژگی استفاده می‌شود.

مثال ۱: برنامه #C  زیر از ویژگی رشته‌های میانجی «string interpolation» برای ساخت یک رشته جدید استفاده می‌کند و طول رشته را نیز محاسبه می‌کند.

using System;

public class PStore
{
      // Main Method
    static public void Main ()
    {
        string name = "ProgramStore";
        
        // Interpolation is performed
        string res = $"{name} is the Organisation Name.";
        
        // Printing the String
        Console.WriteLine(res);
        Console.WriteLine("Length: " + res.Length);
    }
}

خروجی

ProgramStore is the Organisation Name.
Length: 38

نکات:

  • رشته میانجی «string interpolation»: یکی از ویژگی‌های C# از نسخه ۶ به بعد است که امکان قرار دادن متغیرها داخل رشته‌ها به‌صورت مستقیم را فراهم می‌کند. این روش خوانایی کد را افزایش می‌دهد.
  • ویژگی Length: برای محاسبه طول یک رشته در #C از ویژگی Length استفاده می‌شود که تعداد کاراکترهای موجود در رشته را برمی‌گرداند.

این روش یکی از ساده‌ترین و خوانا‌ترین راه‌ها برای ترکیب رشته‌ها

انجام عملیات Trim، Replace و Concatenate روی رشته‌ها

در ادامه این مقاله مثال‌هایی برای استفاده از عملیات Trim، Replace و Concatenate (ترکیب) روی رشته‌ها در سی‌شارپ آورده شده است:

مثال ۲: برنامه #C زیر چند عملیات مختلف روی رشته‌ها انجام می‌دهد، از جمله حذف فضاهای اضافی از ابتدا و انتهای رشته‌ها، دسترسی به عناصر یک رشته و جایگزینی کاراکترها.

using System;

public class Pstore
{
    static public void Main ()
    {
        string first = " Program ";
        string second = " Store ";
        
        // trim the String
        first=first.Trim();
        second=second.Trim();
        
        // Checking element at index 2 first
        Console.WriteLine("Element at index 2: " + first[2]);
        
        // replacing the element in String
        first=first.Replace("E","e");
        Console.WriteLine(first+second);
    }
}

خروجی

Element at index 2: o
ProgramStore

توضیحات:

  • متد ()Trim: برای حذف فضاهای اضافی از ابتدا و انتهای رشته‌ها استفاده می‌شود.
  • دسترسی به عناصر رشته: با استفاده از ایندکس، می‌توان به کاراکترهای یک رشته دسترسی پیدا کرد.
  • متد ()Replace: برای جایگزینی تمامی occurrences از یک کاراکتر با کاراکتری دیگر در رشته استفاده می‌شود.

برنامه بالا نشان‌دهنده‌ی نحوه‌ی استفاده از این متدها و ویژگی‌ها برای انجام تغییرات مختلف روی رشته‌ها است.

متد های رشته در سی شارپ

در سی‌شارپ (#C)، کلاس String مجموعه‌ای از متدهای مختلف برای عملیات مرتبط با رشته‌ها ارائه می‌دهد. این متدها برای پردازش، جستجو، اصلاح و تجزیه رشته‌ها به کار می‌روند.

در ادامه لیستی از متدهای مهم مرتبط با رشته‌ها در C# ارائه شده است. این متدها عملیات مختلفی را روی رشته‌ها انجام می‌دهند:

متد توضیحات نوع برگشت مثال
IndexOf شاخص اولین وقوع یک کاراکتر یا زیر رشته مشخص شده را پیدا می کند. Integer ;text.IndexOf(“World”)
StartsWith بررسی می کند که آیا یک رشته با یک زیررشته مشخص شروع می شود. Boolean ;text.StartsWith(“Hello”)
EndsWith بررسی می‌کند که آیا یک رشته با یک زیررشته مشخص به پایان می‌رسد. Boolean ;text.EndsWith(“World!”)
ToUpper یک رشته را به حروف بزرگ تبدیل می کند. String ;()text.ToUpper
ToLower یک رشته را به حروف کوچک تبدیل می کند. String ;()text.ToLower
Split یک رشته را بر اساس یک جداکننده مشخص به آرایه تقسیم می کند. String Array ;(‘,’)fruits.Split
Join آرایه‌ای از رشته‌ها را با یک جداکننده مشخص در یک رشته واحد ترکیب می‌کند. String ;string.Join(” – “, fruitArray)
Contains بررسی می‌کند که آیا یک رشته دارای زیررشته مشخصی است یا خیر. Boolean ;text.Contains(“World”)
PadLeft یک رشته را با فاصله یا یک کاراکتر مشخص به طول مشخصی اضافه می کند. String ;text.PadLeft(20, ‘*’)
PadRight رشته‌ای را در سمت راست با فاصله‌ها یا یک کاراکتر مشخص به طول مشخصی اضافه می‌کند. String ;text.PadRight(20, ‘*’)
Remove کاراکترها را از رشته ای که از یک شاخص مشخص شروع می شود حذف می کند. String ;text.Remove(5, 7)
Insert یک رشته را در یک شاخص مشخص درج می کند. String ;text.Insert(5, ” Beautiful”)
Trim فضاهای سفید پیشرو و انتهایی را حذف می کند. String ;()text.Trim
Replace وقوع یک رشته فرعی را با زیررشته دیگری جایگزین می کند. String ;text.Replace(“fun”, “awesome”)

آرایه های رشته ای در سی شارپ

آرایه‌های رشته‌ای در سی‌شارپ به شما این امکان را می‌دهند که مجموعه‌ای از رشته‌ها را ذخیره کنید و روی آن‌ها عملیات مختلف انجام دهید. یک آرایه رشته‌ای در سی‌شارپ مشابه سایر آرایه‌ها است، با این تفاوت که نوع داده‌ی ذخیره‌شده در آن string است.

در زیر چند روش برای ایجاد و استفاده از آرایه‌های رشته‌ای نشان داده شده است:

String [] array_variable  =  new  String[Length_of_array]

مثال: قطعه کد #C زیر برای کار با آرایه‌ای از رشته‌ها نوشته شده است. این برنامه به‌طور ساده نحوه‌ی کار با آرایه‌ها و دسترسی به عناصر آن‌ها را در C# نشان می‌دهد.

// C# program for an array of strings
using System;

class PStore 
{    
   // Main Method
   static void Main(string[] args)
   {
          String[] str_arr = new String[3];

        // Initialising the array of strings
        str_arr[0] = "Program";
        str_arr[1] = "and";
        str_arr[2] = "Store";

        // printing String array
        for(int i = 0; i < 3; i++) {
            Console.WriteLine("value at Index position " + i
                              + " is " + str_arr[i]);
        }

    }
}

خروجی

value at Index position 0 is Program
value at Index position 1 is and
value at Index position 2 is Store

توضیحات:

  • آرایه‌ها در #C: یک آرایه در سی شارپ می‌تواند مجموعه‌ای از داده‌های مشابه باشد. در مثال بالا، ما آرایه‌ای از رشته‌ها داریم که ۳ عنصر از نوع string را ذخیره می‌کند.
  • حلقه for: برای تکرار و دسترسی به عناصر آرایه می‌توان از حلقه for استفاده کرد. مقدار ایندکس از ۰ شروع می‌شود و تا n-1 ادامه پیدا می‌کند (در مثال بالا ۳ عنصر داریم، پس ایندکس‌ها ۰، ۱، و ۲ خواهند بود).

String در مقابل System.String

در سی‌شارپ، string و System.String در واقع به یک چیز اشاره دارند و از نظر عملکرد و ویژگی‌ها تفاوتی ندارند. در حقیقت، string یک alias (نام مستعار) برای System.String است که در فضای نام System تعریف شده است.

جنبه‌ها Aspects کلمه کلیدی string System.String (Class)
تعریف Definition نام مستعار برای System.String. نام کلاس کاملا واجد شرایط در NET.
عملکرد Performance تفاوتی در عملکرد وجود ندارد. تفاوتی در عملکرد وجود ندارد.
کاربرد Usage معمولاً برای اعلان متغیرها، فیلدها و خصوصیات استفاده می شود. برای دسترسی به روش های استاتیک یا انواع کاملاً واجد شرایط استفاده می شود.
سهولت استفاده Ease of Use خلاصه ای برای نوشتن کد ارائه می دهد. پرمخاطب تر اما از نظر عملکردی با رشته یکسان است.
روش های دسترسی Accessing Methods متدها از طریق کلاس System.String قابل دسترسی هستند. متدهای استاتیک مانند String.Substring، String.IndexOf و غیره مستقیماً قابل دسترسی هستند.
کلمه کلیدی یا کلاس  Keyword or Class کلمه کلیدی سی شارپ کلاس NET.

جمع‌بندی:

  • string کلمه کلیدی زبان سی‌شارپ است که به کلاس System.String اشاره می‌کند.
  • System.String نام کامل کلاس است که در فضای نام System قرار دارد.
  • از نظر عملکرد و قابلیت‌ها هیچ تفاوتی بین این دو وجود ندارد.

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

نکته: درNET. ، متن به صورت مجموعه‌ای ترتیبی از اشیاء Char ذخیره می‌شود، بنابراین هیچ کاراکتر پایانی (null-terminating character) در انتهای یک رشته #C وجود ندارد.

سخن آخر

از آنجا که رشته‌ها در C# به عنوان Reference Type شناخته می‌شوند، دسترسی به آنها بر اساس ارجاع است و برخلاف نوع داده‌های Value Type، تغییرات در یک رشته مستقیماً بر روی داده‌های آن اثر نمی‌گذارد. یکی از ویژگی‌های منحصر به فرد رشته‌ها در C# این است که آنها می‌توانند شامل کاراکترهای null (‘\۰’) در هر نقطه‌ای از رشته باشند، بدون اینکه پایان رشته را تحت تأثیر قرار دهند. این ویژگی به برنامه‌نویسان این امکان را می‌دهد که رشته‌ها را با انعطاف بیشتری مدیریت کنند.

در نهایت، درک نحوه عملکرد رشته ها در سی شارپ #C برای هر برنامه‌نویس اهمیت زیادی دارد، چرا که استفاده بهینه از این نوع داده می‌تواند به بهبود کارایی و سهولت کدنویسی کمک کند. با یادگیری و استفاده از ویژگی‌ها و متدهای مختلف کلاس System.String، می‌توان از قدرت رشته‌ها به شکلی مؤثر و کارآمد بهره‌برداری کرد.

اگرچه رشته ها در سی شارپ #C به صورت ساده و قابل فهم به نظر می‌رسند، اما پیچیدگی‌هایی همچون مدیریت حافظه، کاراکترهای null و ویژگی‌های مربوط به immutable بودن آنها، باعث می‌شود که درک صحیح و استفاده بهینه از این ویژگی‌ها از اهمیت بالایی برخوردار باشد.


سوالات متداول


رشته در سی شارپ چیست و چگونه تعریف می‌شود؟

رشته‌ها در سی شارپ به عنوان یک نوع داده متنی از نوع Reference Type شناخته می‌شوند که توسط کلاس System.String مدیریت می‌شوند. برای تعریف یک رشته در #C از دستور string یا String استفاده می‌شود و می‌توان آن را به طور مستقیم با مقداردهی اولیه یا از طریق متدهای مختلف ایجاد کرد.

چگونه می‌توان یک رشته را از ورودی کاربر دریافت کرد؟

برای دریافت ورودی از کاربر، می‌توان از متد Console.ReadLine() استفاده کرد. این متد یک رشته را از ورودی کاربر دریافت می‌کند.

تفاوت بین string و String در #C چیست؟

در C#، string یک alias (نام مستعار) برای کلاس System.String است. به عبارت دیگر، string و String هر دو به یک کلاس اشاره می‌کنند و تفاوتی در عملکرد آنها وجود ندارد. string بیشتر به عنوان یک کلمه کلیدی در زبان #C شناخته می‌شود.

چگونه می‌توان یک زیررشته از یک رشته در C# استخراج کرد؟

برای استخراج یک زیررشته از یک رشته، می‌توان از متد ()Substring استفاده کرد. این متد به شما این امکان را می‌دهد که از یک موقعیت خاص به بعد، یا از ابتدا تا یک موقعیت خاص، بخشی از رشته را استخراج کنید.

آرایه رشته‌ای چیست و چگونه در #C ایجاد می‌شود؟

آرایه رشته‌ای مجموعه‌ای از رشته‌ها است که می‌توان آن را با استفاده از دستور new یا با مقداردهی اولیه ایجاد کرد. آرایه‌ها در #C می‌توانند شامل هر تعداد رشته باشند.

میزان رضایتمندی
لطفاً میزان رضایت خودتان را از این مطلب با دادن امتیاز اعلام کنید.
[ امتیاز میانگین 5 از 4 نفر ]
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع و مراجع:
مجله پی استور geeksforgeeks w3schools

دیدگاه‌ خود را بنویسید

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

1 دیدگاه دربارهٔ «رشته ها در سی شارپ – معرفی متدهای String»



برچسب‌ها:
سی شارپ


پیمایش به بالا