سه شنبه ۲۷ شهريور ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش سی شارپ - رشته‌ها

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

ایجاد یک شیء رشته (String Object)

شما می‌توانید با استفاده از یکی از روش‌های زیر، یک شیء رشته ایجاد کنید:

  • با اختصاص دادن یک متن ثابت به یک متغیر String

  • با استفاده از یک سازنده کلاس String

  • با استفاده از عملگر اتصال رشته (+)

  • با بازیابی یک خاصیت یا فراخوانی یک متد که یک رشته را باز می‌گرداند

  • با فراخوانی یک متد قالب‌بندی برای تبدیل یک مقدار یا یک شیء به نمایش رشته آن

مثال زیر این را نشان می‌دهد:

using System;

namespace StringApplication {

   class Program {
   
      static void Main(string[] args) {
         //from string literal and string concatenation
         string fname, lname;
         fname = "Rowan";
         lname = "Atkinson";
			
         char []letters= { 'H', 'e', 'l', 'l','o' };
         string [] sarray={ "Hello", "From", "Tut", "24" };
         
         string fullname = fname + lname;
         Console.WriteLine("Full Name: {0}", fullname);
         
         //by using string constructor { 'H', 'e', 'l', 'l','o' };
         string greetings = new string(letters);
         Console.WriteLine("Greetings: {0}", greetings);
         
         //methods returning string { "Hello", "From", "Tut", "24" };
         string message = String.Join(" ", sarray);
         Console.WriteLine("Message: {0}", message);
         
         //formatting method to convert a value
         DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
         string chat = String.Format("Message sent at {0:t} on {0:D}", waiting);
         Console.WriteLine("Message: {0}", chat);
      }
   }
}

هنگامی که کد بالا کامپایل و اجرا می‌شود، نتیجه زیر تولید می‌شود −

Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tut 24
Message: Message sent at 5:58 PM on Wednesday, October 10, 2012

خصوصیات کلاس رشته (String)

کلاس رشته دارای دو خصوصیت زیر است −

ردیف خصوصیت و توضیحات
۱

Chars

شیء Char در یک موقعیت مشخص در رشته‌ی فعلی را برمی‌گرداند.

۲

Length

تعداد کاراکترها در رشته‌ی فعلی را برمی‌گرداند.

متدهای کلاس رشته (String)

کلاس رشته دارای تعداد زیادی متد است که به شما در کار با شیء‌های رشته‌ای کمک می‌کنند. جدول زیر برخی از متدهای پرکاربرد را نشان می‌دهد −

ردیف متد و شرح
1

public static int Compare(string strA, string strB)

دو شیء رشته مشخص شده را مقایسه می کند و یک عدد صحیح برمی گرداند که موقعیت نسبی آن ها در ترتیب مرتب سازی را نشان می دهد.

2

public static int Compare(string strA, string strB, bool ignoreCase )

دو شیء رشته مشخص شده را مقایسه می کند و یک عدد صحیح برمی گرداند که موقعیت نسبی آن ها در ترتیب مرتب سازی را نشان می دهد. با این حال، اگر پارامتر Boolean صحیح باشد، از حروف بزرگ و کوچک غیر مهم استفاده نمی شود.

3

public static string Concat(string str0, string str1)

دو شیء رشته را به هم می چسباند.

4

public static string Concat(string str0, string str1, string str2)

سه شیء رشته را به هم می چسباند.

5

public static string Concat(string str0, string str1, string str2, string str3)

چهار شیء رشته را به هم می چسباند.

6

public bool Contains(string value)

یک مقدار برمی گرداند که نشان می دهد آیا شیء رشته مشخص شده در این رشته وجود دارد یا خیر.

7

public static string Copy(string str)

یک شیء رشته جدید با همان مقدار رشته مشخص شده ایجاد می کند.

8

public void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int count)

یک تعداد مشخصی از کاراکترها از یک موقعیت مشخص از طریق شیء رشته به یک موقعیت مشخص در یک آرایه کاراکتری یونیکد کپی می کند.

9

public bool EndsWith(string value)

تعیین می کند که آیا پایان رشته مورد نظر با رشته مشخص شده مطابقت دارد یا نه.

10

public bool Equals(string value)

تعیین می کند که آیا شیء رشته فعلی و شیء رشته مشخص شده دارای مقدار یکسانی هستند یا نه.

11

public static bool Equals(string a, string b)

تعیین می کند که آیا دو شیء رشته مشخص شده دارای مقدار یکسانی هستند یا نه.

12

public static string Format(string format, Object arg0)

یک یا چند آیتم قالب بندی در رشته مشخص شده با نمایش رشته تبدیل یک شیء مشخص شده جایگزین می کند.

13

public int IndexOf(char value)

شاخص صفر برای اولین بار ظاهر شدن کاراکتر یونیکد مشخص شده در رشته کنونی را برمی گرداند.

14

public int IndexOf(string value)

شاخص صفر برای اولین بار ظاهر شدن رشته مشخص شده در رشته کنونی را برمی گرداند.

15

public int IndexOf(char value, int startIndex)

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

16

public int IndexOf(string value, int startIndex)

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

17

public int IndexOfAny(char[] anyOf)

در این رشته، شماره صفر مبتنی بر شاخص، اولین وقوع هر کاراکتر در آرایه‌ای از کاراکترهای یونیک مشخص شده را برمی‌گرداند.

18

public int IndexOfAny(char[] anyOf, int startIndex)

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

19

public string Insert(int startIndex, string value)

رشته جدیدی را که در آن رشته مشخص شده در محل مشخص شده تزریق شده است، برمی‌گرداند.

20

public static bool IsNullOrEmpty(string value)

نشان می‌دهد که رشته مشخص شده، خالی (بدون محتوا) یا null است یا خیر.

21

public static string Join(string separator, params string[] value)

ترکیب تمام عناصر آرایه رشته ای با استفاده از جداکننده مشخص شده بین هر عنصر.

22

public static string Join(string separator, string[] value, int startIndex, int count)

ترکیب عناصر مشخص شده آرایه رشته ای با استفاده از جداکننده مشخص شده بین هر عنصر. پارامترهای startIndex و count نشان دهنده شروع و تعداد عناصر مشخص شده هستند.

23

public int LastIndexOf(char value)

موقعیت مبنای صفر شامل آخرین وقوع کاراکتر یونیک ارائه شده در شیء رشته ای کنونی را برمی گرداند.

24

public int LastIndexOf(string value)

موقعیت مبنای صفر شامل آخرین وقوع رشته مشخص شده در شیء رشته ای کنونی را برمی گرداند.

25

public string Remove(int startIndex)

تمام کاراکترهای موجود در نمونه فعلی رشته را از موقعیت مشخص شده شروع کرده و تا آخرین موقعیت حذف می کند و رشته را برمی گرداند.

26

public string Remove(int startIndex, int count)

تعداد مشخص شده کاراکترهای رشته کنونی را از موقعیت مشخص شده شروع کرده و حذف می کند و رشته را برمی گرداند.

27

public string Replace(char oldChar, char newChar)

تمامی حروف یونیکد مشخص شده در رشته فعلی با حرف یونیکد مشخص شده دیگر جایگزین می‌شود و رشته جدید برگشت داده می‌شود. (جایگزینی)

28

public string Replace(string oldValue, string newValue)

تمامی رشته‌های مشخص شده در رشته فعلی با رشته مشخص شده دیگر جایگزین می‌شود و رشته جدید برگشت داده می‌شود. (جایگزینی)

29

public string[] Split(params char[] separator)

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

30

public string[] Split(char[] separator, int count)

آرایه‌ای از رشته‌ها که شامل زیررشته‌های موجود در رشته فعلی با استفاده از کاراکترهای مشخص شده است، برگشت داده می‌شود. پارامتر int حداکثر تعداد زیررشته‌هایی که باید برگشت داده شود را مشخص می‌کند. (تقسیم)

31

public bool StartsWith(string value)

تعیین می‌کند که آیا شروع این نمونه رشته با رشته مشخص شده مطابقت دارد یا نه. (آغاز با)

32

public char[] ToCharArray()

آرایه‌ای از کاراکترهای یونیکد رشته فعلی برگشت داده می‌شود. (تبدیل به آرایه کاراکتر)

33

public char[] ToCharArray(int startIndex, int length)

مرجع رشته کنونی را با تمام کاراکترهای آن، شروع از ایندکس مشخص و تا طول مشخص شده برمی‌گرداند. (Unicode character array)

34

public string ToLower()

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

35

public string ToUpper()

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

36

public string Trim()

تمام کاراکترهای white-space یعنی فاصله یا تب، در ابتدا و انتهای رشته کنونی را حذف می‌کند. (String object)

برای دیدن لیست کامل متدها و سازندگان کلاس رشته می توانید به کتابخانه MSDN مراجعه کنید.

نمونه ها

نمونه های زیر برخی از متدهایی را که در بالا ذکر شده است نشان می دهند −

مقایسه رشته ها

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string str1 = "This is test";
         string str2 = "This is text";

         if (String.Compare(str1, str2) == 0) {
            Console.WriteLine(str1 + " and " + str2 +  " are equal.");
         } else {
            Console.WriteLine(str1 + " and " + str2 + " are not equal.");
         }
         Console.ReadKey() ;
      }
   }
}

وقتی کد بالا کامپایل و اجرا می‌شود، نتیجه زیر را تولید می‌کند −

This is test and This is text are not equal.

رشته شامل رشته

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string str = "This is test";
         
         if (str.Contains("test")) {
            Console.WriteLine("The sequence 'test' was found.");
         }
         Console.ReadKey() ;
      }
   }
}

زمانی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را تولید می کند −

The sequence 'test' was found.

گرفتن زیر رشته

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string str = "Last night I dreamt of San Pedro";
         Console.WriteLine(str);
         string substr = str.Substring(23);
         Console.WriteLine(substr);
      }
   }
}

زمانی که کد بالا کامپایل و اجرا می شود، نتیجه زیر را تولید می کند −

San Pedro

پیوستن رشته ها

using System;

namespace StringApplication {

   class StringProg {
   
      static void Main(string[] args) {
         string[] starray = new string[]{"Down the way nights are dark",
            "And the sun shines daily on the mountain top",
            "I took a trip on a sailing ship",
            "And when I reached Jamaica",
            "I made a stop"};

         string str = String.Join("\n", starray);
         Console.WriteLine(str);
      }
   }
}

هنگامی که کد بالا کامپایل و اجرا می‌شود، نتیجه زیر را تولید می‌کند −

Down the way nights are dark
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop