نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی

منظور از رشته در زبان C چیست؟ اپراتورهای کلاس رشته

که در استاندارد مدرن C++ یک کلاس با توابع و ویژگی ها (متغیرها) برای سازماندهی کار با رشته ها (در زبان کلاسیکهیچ رشته ای وجود ندارد، فقط آرایه هایی از کاراکترهای کاراکتر وجود دارد):

#عبارتند از

#عبارتند از

#عبارتند از

برای کار با رشته ها، همچنین باید یک فضای نام استاندارد را متصل کنید:

استفاده از namespace std.

در غیر این صورت، شما باید به جای رشته، توصیفگر کلاس std::string را در همه جا مشخص کنید.

در زیر نمونه ای از برنامه ای است که با رشته کار می کند (در کامپایلرهای قدیمی سازگار با C کار نمی کند!):

#عبارتند از #عبارتند از #عبارتند از با استفاده از namespace std. int main() ( string s = "Test"; s.insert(1,"!"); cout<< s.c_str() << endl; string *s2 = new string("Hello"); s2->erase(s2->end()); کوت<< s2->c_str(); cin.get(); بازگشت 0; )

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

  • مقداردهی اولیه با آرایه ای از کاراکترها (یک نوع رشته داخلی) یا یک شی دیگر از نوع رشته. نوع توکار قابلیت دوم را ندارد.
  • کپی کردن یک خط به خط دیگر برای یک نوع داخلی باید از تابع strcpy() استفاده کنید.
  • دسترسی به شخصیت های فردیخطوطی برای خواندن و نوشتن در یک آرایه داخلی، این کار با استفاده از عملیات فهرست یا آدرس دهی غیر مستقیم با استفاده از یک اشاره گر انجام می شود.
  • مقایسه دو رشته برای برابری برای یک نوع داخلی، از توابع خانواده strcmp() استفاده می شود.
  • الحاق (الحاق) دو رشته، که نتیجه را یا به عنوان یک رشته سوم یا به جای یکی از رشته های اصلی ایجاد می کند. برای یک نوع داخلی، از تابع strcat() استفاده می شود، اما برای دریافت نتیجه خط جدید، باید به صورت متوالی از توابع strcpy() و strcat() استفاده کنید و همچنین مراقب تخصیص حافظه باشید.
  • ابزار داخلی برای تعیین طول یک رشته (توابع عضو کلاس size() و l ength()). تنها راه برای فهمیدن طول رشته نوع داخلی محاسبه آن با استفاده از تابع strlen() است.
  • توانایی یافتن خالی بودن یک رشته

بیایید به اینها نگاه کنیم قابلیت های اساسیدر جزئیات.

راه اندازی رشته هاهنگام توصیف و طول رشته(بدون احتساب پایان دهنده تهی پایان دهنده):

String st("رشته من\n"); کوت<< "Длина " << st << ": " << st.size() << " символов, включая символ новой строки\n";

رشته همچنین می تواند خالی باشد:

رشته st2;

برای بررسی آن آیا خط خالی است، می توانید طول آن را با 0 مقایسه کنید:

اگر (! st.size()) // خالی باشد

یا از متد ()() استفاده کنید که برای یک رشته خالی true و برای رشته غیر خالی false را برمی گرداند:

اگر (st.empty()) // خالی باشد

شکل سوم ایجاد رشته، یک شی از نوع رشته را با یک شی دیگر از همان نوع مقدار دهی اولیه می کند:

رشته st3(st);

رشته st3 با رشته st مقدار دهی اولیه می شود. چگونه می توانیم اینها را مطمئن کنیم خطوط مطابقت دارند? بیایید از عملگر مقایسه (==):

اگر (st == st3) // مقداردهی اولیه کار کرد

چگونه یک خط را به خط دیگر کپی کنید? با استفاده از عملگر انتساب معمولی:

St2 = st3; // st3 را در st2 کپی کنید

برای الحاق رشتهعملگر جمع (+) یا عملگر جمع به اضافه انتساب (+=) استفاده می شود. بگذارید دو خط داده شود:

رشته s1("سلام،"); رشته s2("world\n");

می‌توانیم یک رشته سوم متشکل از الحاق دو مورد اول به دست آوریم، به این ترتیب:

رشته s3 = s1 + s2;

اگر بخواهیم s2 را به انتهای s1 اضافه کنیم باید بنویسیم:

S1 += s2;

عملیات جمع می تواند اشیاء کلاس را به هم متصل کند رشتهنه تنها در بین خود، بلکه با رشته های نوع داخلی. می‌توانید مثال بالا را به گونه‌ای بازنویسی کنید که کاراکترهای خاص و علائم نگارشی با نوع char * و کلمات مهم با اشیاء رشته کلاس نمایش داده شوند:

Const char *pc = ", "; رشته s1 ("سلام"); رشته s2 ("جهان"); رشته s3 = s1 + pc + s2 + "\n"; کوت<< endl << s3;

چنین عباراتی کار می کنند زیرا کامپایلر "می داند" چگونه به طور خودکار اشیاء از نوع داخلی را به اشیاء کلاس رشته تبدیل کند. همچنین می توان به سادگی یک رشته داخلی را به یک شی رشته اختصاص داد:

رشته s1; const char *pc = "یک آرایه کاراکتر"; s1 = pc; // درست

تبدیل معکوس در این مورد کار نمی کند. تلاش برای انجام اولیه سازی رشته نوع داخلی زیر باعث خطای کامپایل می شود:

Char *str = s1; // خطای کامپایل

برای انجام این تبدیل، باید به صراحت یک تابع عضو به نام c_str() ("رشته C") را فراخوانی کنید:

Const char *str = s1.c_str();

تابع ()c_str یک اشاره گر را به یک آرایه کاراکتری حاوی رشته شی رشته رشته همانطور که در نوع رشته داخلی ظاهر می شود، برمی گرداند. کلمه کلیدی const در اینجا از امکان "خطرناک" در محیط های بصری مدرن تغییر مستقیم محتویات یک شی از طریق یک اشاره گر جلوگیری می کند.

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

String str("www.disney.com"); int size = str.size(); برای (int i = 0; i< size; i++) if (str[i] == ".") str[ i ] = "_"; cout << str;

Replace(str.begin()، str.end()، "."، "_");

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

#عبارتند از

از آنجایی که شی رشته مانند یک ظرف عمل می کند، می توان الگوریتم های دیگری را برای آن اعمال کرد. این به شما اجازه می دهد تا مسائلی را که مستقیماً توسط توابع کلاس رشته حل نمی شوند حل کنید.

در زیر توضیح مختصری از عملگرها و توابع اصلی کلاس رشته ارائه شده است؛ پیوندهای موجود در جدول منجر به توضیحات به زبان روسی در اینترنت می شوند. لیست کامل تری از قابلیت های کلاس رشته را می توان به عنوان مثال در ویکی پدیا یا وب سایت cplusplus.com یافت.

خطوط. ورودی/خروجی رشته I/O فرمت شده پردازش رشته با استفاده از توابع استاندارد زبان C. کار با حافظه.

1.1. اعلان و مقداردهی اولیه رشته ها.

رشته آرایه ای از کاراکترها است که با کاراکتر خالی '\0' خاتمه می یابد. رشته به عنوان یک آرایه کاراکتر معمولی اعلام می شود، برای مثال،

char s1; // رشته نه کاراکتر

char *s2; // اشاره گر به رشته

تفاوت بین نشانگرهای s1 و s2 در این است که نشانگر s1 یک ثابت نامگذاری شده است و نشانگر s2 یک متغیر است.

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

"این یک رشته است."

طول یک ثابت رشته طبق استاندارد نمی تواند از 509 کاراکتر تجاوز کند. با این حال، بسیاری از پیاده سازی ها طول رشته های طولانی تری را ممکن می کنند.

هنگام مقداردهی اولیه رشته ها، بهتر است اندازه آرایه را مشخص نکنید؛ کامپایلر این کار را با محاسبه طول رشته و اضافه کردن یک به آن انجام می دهد. مثلا،

char s1 = "این یک رشته است.";

در زبان برنامه نویسی C تعداد زیادی توابع برای کار با رشته ها وجود دارد که نمونه های اولیه آن در فایل های هدر stdlib.h و string.h توضیح داده شده است. کار با این توابع در پاراگراف های بعدی مورد بحث قرار خواهد گرفت.

1.2. ورودی/خروجی رشته

برای وارد کردن یک رشته از کنسول، از تابع استفاده کنید

char* gets(char *str);

که یک رشته به آدرس str می نویسد و آدرس رشته وارد شده را برمی گرداند. اگر تابع با نویسه '\n' یا EOF (پایان فایل) مواجه شود، ورودی را متوقف می کند. کاراکتر خط جدید کپی نشده است. یک بایت صفر در انتهای خط خواندن قرار می گیرد. در صورت موفقیت آمیز بودن، تابع یک اشاره گر به خط خوانده شده و اگر ناموفق بود، NULL را برمی گرداند.

برای خروجی یک رشته به کنسول، از تابع استاندارد استفاده کنید

int قرار می دهد (const char *s);

که در صورت موفقیت یک عدد غیر منفی و در صورت عدم موفقیت EOF را برمی گرداند.

نمونه های اولیه تابع gets و puts در فایل هدر stdio.h توضیح داده شده است.

#عبارتند از

printf("رشته ورودی:");

1.3. I/O فرمت شده

برای ورودی داده های فرمت شده از کنسول، از تابع استفاده کنید

int scanf (const char *format, ...);

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

یک فاصله، نویسه "\t" یا "\n" در یک رشته قالب، یک یا چند کاراکتر خالی را در جریان ورودی توصیف می کند که شامل کاراکترهای: space، '\t'، '\n'، '\v'، '\f'. تابع scanf از نویسه های خالی در جریان ورودی عبور می کند.

کاراکترهای تحت اللفظی در یک رشته قالب، به استثنای کاراکتر %، نیاز دارند که دقیقاً همان کاراکترها در جریان ورودی ظاهر شوند. اگر چنین کاراکتری وجود نداشته باشد، تابع scanf وارد نمی شود. تابع scanf از کاراکترهای تحت اللفظی عبور می کند.

به طور کلی، مشخصات فرمت ورودی به صورت زیر است:

%[*] [width] [modifiers] نوع

نماد '*' نشان دهنده حذف در هنگام ورود به یک فیلد تعریف شده توسط این مشخصات است.

- "width" حداکثر تعداد کاراکترهای وارد شده بر اساس این مشخصات را تعیین می کند.

نوع می تواند مقادیر زیر را داشته باشد:

ج – آرایه کاراکترها،

s - رشته ای از کاراکترها، خطوط با کاراکترهای خالی از هم جدا می شوند.

d - عدد صحیح امضا شده 10 s/s،

i - عدد صحیح علامت دار، سیستم اعداد به دو رقم اول بستگی دارد،

u - عدد صحیح بدون علامت در 10 ثانیه بر ثانیه،

o - عدد صحیح بدون علامت در 8 ثانیه بر ثانیه،

x، X - عدد صحیح بدون علامت در 16 ثانیه بر ثانیه،

e، E، f، g، G - عدد شناور،

p – اشاره گر به اشاره گر،

n - اشاره گر به یک عدد صحیح،

[…] – آرایه ای از کاراکترهای اسکن شده، به عنوان مثال، .

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

اصلاح کننده ها می توانند مقادیر زیر را بگیرند:

h - عدد صحیح کوتاه،

l، L - عدد صحیح بلند یا شناور،

و فقط برای اعداد صحیح یا شناور استفاده می شود.

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

#عبارتند از

printf("یک عدد صحیح وارد کنید:");

scanf("%d"، &n);

printf("input a double:");

scanf("%lf"، &d);

printf("یک کاراکتر را وارد کنید:");

scanf("%c"، &c);

printf("یک رشته را وارد کنید:");

scanf(" %s"، &s);

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

برای خروجی فرمت شده داده ها به کنسول، از تابع استفاده کنید

int printf (const char *format, ...);

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

%[flags] [width] [.precision] [modifiers] نوع

- "پرچم ها" نمادهای مختلفی هستند که فرمت خروجی را مشخص می کنند.

- "width" حداقل تعداد کاراکترهای خروجی را طبق این مشخصات تعیین می کند.

- ".precision" حداکثر تعداد کاراکترهای نمایش داده شده را تعیین می کند.

- "تغییر کننده ها" نوع آرگومان ها را مشخص می کنند.

- 'type' نوع آرگومان را مشخص می کند.

برای خروجی اعداد صحیح امضا شده از فرمت خروجی زیر استفاده می شود:

%[-] [+ | فضا] [عرض] [l] د

- – تراز چپ، پیش‌فرض – راست؛

+ - علامت "+" نمایش داده می شود، توجه داشته باشید که برای اعداد منفی علامت "-" همیشه نمایش داده می شود.

"فضا" - یک فاصله در موقعیت کاراکتر نمایش داده می شود.

د – نوع داده int.

برای خروجی اعداد صحیح بدون علامت، از فرمت خروجی زیر استفاده کنید:

%[-] [#] [عرض] [l]

# - 0 اولیه برای اعداد در 8 c/c یا 0x اولیه یا 0X برای اعداد در 16 c/c خروجی است.

l - اصلاح کننده نوع داده طولانی؛

u – عدد صحیح در 10c/c،

o - عدد صحیح در 8 c/c،

x، X - عدد صحیح در 16 c/c.

فرمت خروجی زیر برای نمایش اعداد ممیز شناور استفاده می شود:

%[-] [+ | فضا] [عرض] [دقت]

"دقت" - نشان دهنده تعداد ارقام بعد از نقطه اعشار برای فرمت های f، e و E یا تعداد ارقام مهم برای قالب های g و G است. اعداد گرد شده اند. دقت پیش‌فرض شش رقم اعشاری است.

f – شماره نقطه ثابت

e - یک عدد به صورت نمایی، توان با حرف "e" نشان داده می شود.

E - یک عدد به صورت نمایی، توان با حرف "E" نشان داده می شود.

g – کوتاه ترین فرمت f یا g،

G - کوتاه ترین فرمت f یا G.

printf ("n = %d\n f = %f\n e = %e\n E = %E\n f = %.2f"، -123، 12.34، 12.34، 12.34، 12.34);

// چاپ: n = 123 f = 12.340000 e = 1.234000e+001 E = 1.234000E+001 f = 12.34

1.4. قالب بندی رشته ها

انواع توابع scanf و printf وجود دارد که برای قالب بندی رشته ها طراحی شده اند و به ترتیب sscanf و sprintf نامیده می شوند.

int sscanf (const char *str, const char *format, ...);

با توجه به رشته فرمت مشخص شده توسط قالب، داده ها را از رشته مشخص شده توسط str می خواند. اگر موفقیت آمیز بود، تعداد داده های خوانده شده را برمی گرداند و اگر ناموفق بود، EOF را برمی گرداند. مثلا،

#عبارتند از

char str = "a 10 1.2 String No input";

sscanf(str، "%c %d %lf %s"، &c، &n، &d، s);

printf("%c\n"، c); // چاپ می کند: الف

printf("%d\n"، n); // چاپ: 10

printf("%f\n"، d); // چاپ: 1.200000

printf("%s\n"، s); // چاپ: رشته

int sprintf (char *buffer, const char *format, ...);

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

#عبارتند از

char str = "c = %c، n = %d، d = %f، s = %s";

char s = "این یک رشته است.";

sprintf (بافر، str، c، n، d، s)؛

printf("%s\n"، بافر); // چاپ می کند: c = c، n = 10، d = 1.200000، s = این یک رشته است

1.5. رشته ها را به داده های عددی تبدیل کنید.

نمونه اولیه توابع برای تبدیل رشته ها به داده های عددی در فایل هدر stdlib.h آورده شده است که باید در برنامه گنجانده شود.

برای تبدیل رشته به عدد صحیح از تابع استفاده کنید

int atoi (const char *str);

char *str = “-123”;

n = atoi(str); // n = -123

برای تبدیل رشته به عدد صحیح طولانی، از تابع استفاده کنید

long int atol (const char *str);

که در صورت موفقیت، عدد صحیحی که رشته str به آن تبدیل شده است را برمی گرداند و اگر ناموفق باشد، 0 را برمی گرداند.

char *str = “-123”;

n = atol(str); // n = -123

برای تبدیل رشته به عدد دوتایی، از تابع استفاده کنید

double atof(const char *str);

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

char *str = “-123.321”;

n = atof(str); // n = -123.321

توابع زیر عملکردهای مشابه atoi، atol، atof را انجام می دهند، اما عملکرد پیشرفته تری را ارائه می دهند.

طولانی int strtol (const char *str، char **endptr، int base);

رشته str را به یک عدد int طولانی تبدیل می کند که آن را برمی گرداند. پارامترهای این تابع اهداف زیر را دارند.

اگر پایه 0 باشد، تبدیل به دو کاراکتر اول str بستگی دارد:

اگر اولین کاراکتر یک عدد از 1 تا 9 باشد، فرض می شود که عدد در 10 c/c نشان داده شود.

اگر کاراکتر اول رقم 0 و کاراکتر دوم رقمی از 1 تا 7 باشد، آنگاه فرض می شود که عدد در 8 c/c نشان داده شود.

اگر کاراکتر اول 0 و کاراکتر دوم «X» یا «x» باشد، آنگاه عدد در 16 c/c در نظر گرفته می‌شود.

اگر مبنا عددی بین 2 و 36 باشد، آن مقدار به عنوان پایه سیستم اعداد در نظر گرفته می شود و هر کاراکتری خارج از سیستم اعداد تبدیل را متوقف می کند. در سیستم های اعداد پایه 11 تا پایه 36، از نمادهای "A" تا "Z" یا "a" تا "z" برای نشان دادن ارقام استفاده می شود.

مقدار آرگومان endptr توسط تابع strtol تنظیم می شود. این مقدار حاوی یک اشاره گر به کاراکتری است که از تبدیل رشته رشته جلوگیری می کند. تابع strtol در صورت موفقیت آمیز بودن عدد تبدیل شده و در صورت عدم موفقیت عدد 0 را برمی گرداند.

n = strtol ("12a"، &p، 0);

printf("n = %ld، %stop = %c، n، *p); // n = 12، توقف = a

n = strtol("012b"، &p، 0);

printf("n = %ld، %stop = %c، n، *p); // n = 10، توقف = ب

n = strtol ("0x12z"، &p، 0);

printf("n = %ld، %stop = %c، n، *p); // n = 18، توقف = z

n = strtol ("01117"، &p، 0)؛

printf("n = %ld، %stop = %c، n، *p); // n = 7، توقف = 7

strtol طولانی int بدون علامت (const char *str, char **endptr, int base);

مشابه تابع strtol کار می کند، اما نمایش نمادین یک عدد را به تعدادی از نوع بدون علامت long int تبدیل می کند.

دو strtod (const char *str، char **endptr);

نمایش نمادین یک عدد را به دو برابر تبدیل می کند.

همه توابع فهرست شده در این پاراگراف وقتی با اولین کاراکتر که با قالب شماره مورد نظر مطابقت ندارد، از کار می‌افتند.

علاوه بر این، اگر مقدار کاراکتر یک عدد از محدوده مقادیر قابل قبول برای نوع داده مربوطه بیشتر شود، توابع atof، strtol، strtoul، strtod مقدار متغیر errno را بر روی ERANGE تنظیم می کنند. متغیر errno و ثابت ERANGE در فایل هدر math.h تعریف شده است. در این حالت، توابع atof و strtod مقدار HUGE_VAL، تابع strtol مقدار LONG_MAX یا LONG_MIN و تابع strtoul مقدار ULONG_MAX را برمی‌گرداند.

توابع غیر استاندارد itoa، ltoa، utoa، ecvt، fcvt و gcvt را می توان برای تبدیل داده های عددی به رشته های کاراکتری استفاده کرد. اما بهتر است از تابع استاندارد sprintf برای این اهداف استفاده کنید.

1.6. توابع استاندارد برای کار با رشته ها.

این بخش توابع کار با رشته ها را مورد بحث قرار می دهد که نمونه های اولیه آن در فایل هدر string.h توضیح داده شده است.

1. مقایسه رشته ها.از توابع strcmp و strncmp برای مقایسه رشته ها استفاده می شود.

int strcmp (const char *str1, const char *str2);

از نظر لغوی رشته های str1، str2 را با هم مقایسه می کند و اگر str1 به ترتیب کمتر، مساوی یا بزرگتر از str2 باشد، -1، 0 یا 1 را برمی گرداند.

int strncmp (const char *str1, const char *str2, size_t n);

حداکثر n کاراکتر اول از رشته های str1 و str2 را از نظر لغوی مقایسه می کند. اگر n کاراکتر اول از str1 به ترتیب کوچکتر، مساوی یا بزرگتر از n کاراکتر اول str2 باشد، تابع 1-، 0 یا 1 را برمی گرداند.

// نمونه ای از مقایسه رشته ها

#عبارتند از

#عبارتند از

char str1 = "aa bb";

char str2 = "aa aa";

char str3 = "aa bb cc";

printf("%d\n", strcmp(str1, str3)); // چاپ: -1

printf("%d\n", strcmp(str1, str1)); // چاپ: -0

printf("%d\n", strcmp(str1, str2)); // چاپ: 1

printf("%d\n", strncmp(str1, str3, 5)); // چاپ: 0

2. کپی کردن خطوط.از توابع strcpy و strncpy برای کپی رشته ها استفاده می شود.

char *strcpy (char *str1, const char *str2);

رشته str2 را در رشته str1 کپی می کند. کل رشته str2 از جمله بایت تهی انتهایی کپی می شود. تابع یک اشاره گر را به str1 برمی گرداند. اگر خطوط همپوشانی داشته باشند، نتیجه غیرقابل پیش بینی است.

char *strncpy (char *str1, const char *str2, size_t n);

n کاراکتر را از رشته str2 به رشته str1 کپی می کند. اگر str2 کمتر از n کاراکتر داشته باشد، آخرین صفر بایت هر چند بار که لازم است برای گسترش str2 به n کاراکتر کپی می شود. تابع یک اشاره گر به رشته str1 برمی گرداند.

char str2 = "کپی رشته.";

strcpy(str1, str2);

printf(str1); // prints: رشته کپی.

4. رشته های اتصال.از توابع strcat و strncat برای الحاق رشته ها به یک رشته استفاده می شود.

char* strcat (char *str1, const char *str2);

رشته str2 را به رشته str1 اضافه می کند، با بایت صفر انتهایی رشته str1 پاک می شود. تابع یک اشاره گر به رشته str1 برمی گرداند.

char* strncat (char *str1, const char *str2, size_t n);

n کاراکتر از رشته str2 به رشته str1 اضافه می کند و بایت صفر انتهایی رشته str1 پاک می شود. تابع یک اشاره گر به رشته str1 برمی گرداند. اگر طول رشته str2 کمتر از n باشد، فقط کاراکترهای موجود در رشته str2 اضافه می شوند. پس از الحاق رشته ها، همیشه یک بایت تهی به str1 اضافه می شود. تابع یک اشاره گر به رشته str1 برمی گرداند.

#عبارتند از

#عبارتند از

char str1 = "رشته";

char str2 = "catenation";

char str3 = "بله خیر";

strcat(str1, str2);

printf("%s\n", str1); // prints: string catenation

strncat(str1, str3, 3);

printf("%s\n", str1); // چاپ: کاتناسیون رشته بله

5. یک کاراکتر را در یک رشته جستجو کنید.برای جستجوی یک کاراکتر در یک رشته، از توابع strchr، strrchr، strspn، strcspn و strpbrk استفاده کنید.

char* strchr (const char *str, int c);

اولین رخداد کاراکتر مشخص شده توسط c را در رشته str جستجو می کند. در صورت موفقیت آمیز بودن، این تابع یک اشاره گر به اولین کاراکتر پیدا شده و اگر ناموفق بود، NULL را برمی گرداند.

char* strrchr (const char *str, int c);

آخرین رخداد کاراکتر مشخص شده توسط c را در رشته str جستجو می کند. در صورت موفقیت آمیز بودن، این تابع یک اشاره گر به آخرین کاراکتر پیدا شده و اگر ناموفق بود، NULL را برمی گرداند.

#عبارتند از

#عبارتند از

char str = "جستجوی کاراکتر";

printf("%s\n"، strchr(str، "r")); // چاپ: r جستجو

printf("%s\n"، strrchr(str، "r")); // چاپ: rch

size_t strspn (const char *str1, const char *str2);

ایندکس اولین کاراکتر را از str1 که در str2 نیست برمی گرداند.

size_t strcspn (const char *str1, const char *str2);

ایندکس اولین کاراکتر را از str1 که در str2 ظاهر می شود، برمی گرداند.

char str = "123 abc";

printf ("n = %d\n"، strspn (str, "321"); // چاپ: n = 3

printf ("n = %d\n"، strcspn (str، "cba"); // چاپ: n = 4

char* strpbrk (const char *str1, const char *str2);

اولین کاراکتر را در رشته str1 می یابد که برابر با یکی از کاراکترهای رشته str2 است. در صورت موفقیت آمیز بودن، تابع یک اشاره گر به این کاراکتر و اگر ناموفق بود، NULL را برمی گرداند.

char str = "123 abc";

printf("%s\n"، strpbrk(str، "bca")); // چاپ: abc

6. مقایسه رشته ها.تابع strstr برای مقایسه رشته ها استفاده می شود.

char* strstr (const char *str1, const char *str2);

اولین رخداد str2 (بدون بایت تهی انتهایی) را در str1 پیدا می کند. در صورت موفقیت آمیز بودن، تابع یک اشاره گر به زیررشته پیدا شده و اگر ناموفق بود، NULL را برمی گرداند. اگر نشانگر str1 به رشته ای با طول صفر اشاره کند، آنگاه این تابع نشانگر str1 را برمی گرداند.

char str = "123 abc 456;

printf ("%s\n"، strstr (str، "abc"); // print: abc 456

7. تجزیه یک رشته به نشانه.تابع strtok برای تجزیه رشته به توکن استفاده می شود.

char* sttok (char *str1, const char *str2);

یک اشاره گر به نشانه (کلمه) بعدی در رشته str1، که در آن جداکننده نشانه کاراکترهایی از رشته str2 هستند، برمی گرداند. اگر توکن دیگری وجود نداشته باشد، تابع NULL را برمی‌گرداند. در اولین فراخوانی تابع strtok، پارامتر str1 باید به رشته ای اشاره کند که نشانه گذاری شده است و در فراخوانی های بعدی این پارامتر باید NULL تنظیم شود. پس از یافتن یک نشانه، تابع strtok یک بایت تهی را بعد از این نشانه به جای جداکننده می نویسد.

#عبارتند از

#عبارتند از

char str = "12 34 ab cd";

p = strtok(str, " ");

printf("%s\n"، p); // مقادیر را در یک ستون چاپ می کند: 12 34 ab cd

p = strtok(NULL، "");

8. تعیین طول یک رشته.تابع strlen برای تعیین طول یک رشته استفاده می شود.

size_t strlen (const char *str);

با نادیده گرفتن آخرین بایت تهی، طول رشته را برمی گرداند. مثلا،

char str = "123";

printf("len = %d\n", strlen(str)); // چاپ: len = 3

1.7. توابع کار با حافظه

فایل هدر string.h همچنین توابعی را برای کار با بلوک های حافظه توصیف می کند که مشابه توابع مربوطه برای کار با رشته ها هستند.

void* memchr (const void *str, int c, size_t n);

اولین رخداد کاراکتر مشخص شده توسط c را در n بایت رشته str جستجو می کند.

int memcmp (const void *str1, const void *str2, size_t n);

n بایت اول رشته های str1 و str2 را با هم مقایسه می کند.

void* memcpy (const void *str1, const void *str2, size_t n);

n بایت اول را از رشته str1 به رشته str2 کپی می کند.

void* memmove (const void *str1, const void *str2, size_t n);

n بایت اول را از str1 به str2 کپی می کند و اطمینان حاصل می کند که رشته های همپوشانی به درستی مدیریت می شوند.

void* memset (const void *str, int c, size_t n);

کاراکتر مشخص شده توسط c را در n بایت اول str کپی می کند.

34

--- راهنمای سی شارپ --- رشته ها

از نقطه نظر برنامه نویسی معمولی، رشته نوع داده رشته اییکی از مهم ترین ها در سی شارپ است. این نوع رشته های کاراکتر را تعریف و پشتیبانی می کند. در تعدادی از زبان های برنامه نویسی دیگر، رشته آرایه ای از کاراکترها است. و در سی شارپ رشته ها اشیا هستند. بنابراین نوع رشته یک نوع مرجع است.

ساخت رشته ها

ساده ترین راه برای ساخت یک رشته کاراکتر، استفاده از یک رشته واقعی است. به عنوان مثال، خط کد زیر به متغیر مرجع رشته str یک مرجع به یک رشته واقعی اختصاص می دهد:

String str = "رشته مثال";

در این حالت، متغیر str با دنباله کاراکترهای "Example String" مقداردهی اولیه می شود. یک شی از نوع رشته نیز می تواند از آرایه ای از نوع char ایجاد شود. مثلا:

Char chararray = ("e"، "x"، "a"، "m"، "p"، "l"، "e"); string str = رشته جدید (chararray);

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

ماندگاری رشته

به اندازه کافی عجیب، محتویات یک شی از نوع رشته را نمی توان تغییر داد. این بدان معنی است که وقتی یک دنباله کاراکتر ایجاد شد، نمی توان آن را تغییر داد. اما این محدودیت به اجرای کارآمدتر رشته کاراکترها کمک می کند. بنابراین، این عیب به ظاهر آشکار در واقع به یک مزیت تبدیل می شود. بنابراین، اگر یک رشته به عنوان یک تغییر از یک رشته موجود مورد نیاز است، برای این منظور باید یک رشته جدید حاوی تمام تغییرات لازم ایجاد شود. و از آنجایی که اشیاء رشته های استفاده نشده به طور خودکار به عنوان زباله جمع آوری می شوند، حتی لازم نیست نگران سرنوشت رشته های غیر ضروری باشید.

البته باید تاکید کرد که ارجاعات متغیر به رشته ها (یعنی اشیاء از نوع رشته) در معرض تغییر هستند و بنابراین می توانند به شی دیگری ارجاع دهند. اما محتوای خود رشته رشته پس از ایجاد تغییر نمی کند.

بیایید به یک مثال نگاه کنیم:

Static void addNewString() ( string s = "This is my stroke"; s = "This is new stroke";)

بیایید برنامه را کامپایل کنیم و اسمبلی حاصل را در ابزار ildasm.exe بارگذاری کنیم. شکل کد CIL را نشان می دهد که برای متد void addNewString() تولید می شود:

توجه داشته باشید که فراخوانی های متعددی به کد opcode ldstr (بار رشته) وجود دارد. این کد اپکد CIL ldstr بارگذاری یک شی رشته جدید را بر روی پشته مدیریت شده انجام می دهد. در نتیجه، شی قبلی که حاوی مقدار "This is my stroke" بود، در نهایت زباله جمع‌آوری می‌شود.

کار با رشته ها

در کلاس System.Stringمجموعه ای از روش ها برای تعیین طول داده های کاراکتر، جستجوی یک زیر رشته در رشته فعلی، تبدیل کاراکترها از حروف بزرگ به حروف کوچک و بالعکس و غیره ارائه شده است. در ادامه این کلاس را با جزئیات بیشتری بررسی خواهیم کرد.

ویژگی های Field، Indexer و String Class

کلاس String یک فیلد واحد را تعریف می کند:

رشته فقط خواندنی استاتیک عمومی Empty;

فیلد Empty یک رشته خالی را نشان می دهد، یعنی. رشته ای که حاوی هیچ کاراکتری نیست. این با یک مرجع خالی رشته ای که به سادگی به یک شی غیر موجود ساخته می شود متفاوت است.

علاوه بر این، کلاس String یک نمایه ساز تنها خواندنی را تعریف می کند:

این کاراکتر عمومی (دریافت؛)

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

در نهایت، کلاس String یک ویژگی تنها خواندنی را تعریف می کند:

طول int عمومی ( دریافت؛ )

ویژگی Length تعداد کاراکترهای رشته را برمی گرداند. مثال زیر استفاده از نمایه ساز و ویژگی Length را نشان می دهد:

استفاده از سیستم؛ class Example ( static void Main() ( string str = "Simple string"; // طول رشته و کاراکتر ششم در خط را با استفاده از نمایه ساز Console.WriteLine("طول رشته (0) است، 6th کاراکتر "(1)"" است، str.Length، str؛ ) )

اپراتورهای کلاس رشته

کلاس String دو عملگر زیر را بارگذاری می کند: == و !=. عملگر == برای آزمایش دو رشته کاراکتر برای برابری استفاده می شود. هنگامی که عملگر == به ارجاعات شیء اعمال می شود، معمولاً آزمایش می کند که آیا هر دو مرجع به یک شیء ساخته شده اند یا خیر. و هنگامی که عملگر == برای ارجاع به اشیاء از نوع String اعمال می شود، محتویات خود رشته ها برای برابری مقایسه می شوند. همین امر در مورد عملگر != نیز صدق می کند. هنگامی که برای ارجاع به اشیاء از نوع String اعمال می شود، محتویات خود رشته ها برای نابرابری مقایسه می شوند. با این حال، سایر عملگرهای رابطه‌ای، از جمله =، ارجاعات را به اشیایی از نوع String به همان شیوه‌ای مقایسه می‌کنند که مراجع را با اشیاء انواع دیگر مقایسه می‌کنند. و برای بررسی اینکه آیا یک رشته از رشته دیگر بزرگتر است، باید متد Compare() تعریف شده در کلاس String را فراخوانی کنید.

همانطور که مشخص خواهد شد، بسیاری از انواع مقایسه رشته کاراکترها بر اطلاعات فرهنگی متکی هستند. اما این برای عملگرهای == و != صدق نمی کند. از این گذشته ، آنها به سادگی مقادیر ترتیبی کاراکترها را در رشته ها مقایسه می کنند. (به عبارت دیگر، آنها مقادیر باینری کاراکترهایی را که توسط هنجارهای فرهنگی، یعنی استانداردهای محلی اصلاح نشده اند، مقایسه می کنند.) بنابراین، این عملگرها مقایسه رشته ها را به روشی غیر حساس به حروف بزرگ و غیر حساس به فرهنگ انجام می دهند.

متدهای کلاس رشته

جدول زیر تعدادی از جالب ترین متدهای این کلاس را که بر اساس هدف گروه بندی شده اند فهرست می کند:

تعیین کاراکترها در یک رشته

اپراتور=

مقادیر را به یک رشته اختصاص می دهد

اختصاص دهد

کاراکترها را به یک رشته اختصاص می دهد

دسترسی به شخصیت های فردی

در

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

اپراتور

دریافت شخصیت مشخص شده

جلو

گرفتن شخصیت اول

بازگشت

گرفتن آخرین شخصیت

داده ها

یک اشاره گر به اولین کاراکتر رشته برمی گرداند

c_str

برمی گرداند غیر قابل تغییریک آرایه کاراکتر C حاوی کاراکترهای رشته

بررسی ظرفیت خط

خالی

بررسی می کند که آیا یک رشته خالی است

اندازه
طول

تعداد کاراکترهای یک رشته را برمی گرداند

حداکثر_اندازه

حداکثر تعداد کاراکترها را برمی گرداند

ذخیره

فضای ذخیره سازی را رزرو می کند

عملیات رشته

روشن

محتویات یک رشته را پاک می کند

درج کنید

درج کاراکترها

پاک کردن

حذف کاراکترها

push_back

اضافه کردن یک کاراکتر به انتهای رشته

pop_back

آخرین کاراکتر را حذف می کند

ضمیمه

عملگر+=

کاراکترهایی را به انتهای رشته اضافه می کند

مقایسه کنید

دو رشته را با هم مقایسه می کند

جایگزین کردن

هر اتفاقی از کاراکتر مشخص شده را جایگزین می کند

substr

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

کپی 🀄

شخصیت ها را کپی می کند

تغییر اندازه

تعداد کاراکترهای ذخیره شده را تغییر می دهد

کتابخانه توابع C و C++ شامل مجموعه ای غنی از توابع پردازش رشته و کاراکتر است. توابع رشته ای روی آرایه های کاراکتری که با کاراکترهای تهی خاتمه می یابند عمل می کنند. در زبان C، برای استفاده از توابع رشته، باید یک فایل هدر در ابتدای ماژول برنامه قرار دهید و برای موارد نمادین - فایل هدر . C++ از هدرها برای کار با توابع رشته و کاراکتر استفاده می کند و به ترتیب. این فصل از نام‌های سرفصل C برای سهولت ارائه استفاده می‌کند.

از آنجایی که زبان های C و C++ هنگام انجام عملیات با آرایه ها به طور خودکار نقض مرزهای خود را کنترل نمی کنند، تمام مسئولیت سرریز آرایه بر دوش برنامه نویس است. بی توجهی به این نکات ظریف می تواند باعث خرابی برنامه شود.

در C و C++، کاراکترهای قابل چاپ، کاراکترهایی هستند که در ترمینال نمایش داده می شوند. در محیط های ASCII، آنها بین فضا (0x20) و tilde (OxFE) قرار دارند. کاراکترهای کنترل دارای مقادیری بین صفر و Ox1F هستند. اینها همچنین شامل نماد DEL (Ox7F) می شوند.

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

در عنوان نوع size_t تعریف شده است که حاصل اعمال عملگر sizeof است و یک نوع عدد صحیح بدون علامت است.

C99 واجد شرایط محدود را به برخی از پارامترهای چندین تابع که در ابتدا در C89 تعریف شده بودند اضافه کرد. هنگام بررسی هر یک از این تابع ها، نمونه اولیه آن که در محیط C89 (و همچنین در محیط C++) استفاده می شود، ارائه می شود و پارامترهایی با ویژگی محدود در توضیحات این تابع ذکر می شود.

لیست توابع

وابستگی را بررسی کنید

isalnum - بررسی اینکه آیا یک کاراکتر حروف عددی است یا خیر
isalpha - بررسی اینکه آیا یک نماد به حروف تعلق دارد یا خیر
isblank - یک کاراکتر خالی را بررسی کنید
iscntrl - بررسی اینکه آیا یک نماد به نمادهای کنترل تعلق دارد یا خیر
isdigit - بررسی دیجیتال بودن یک کاراکتر
isgraph - بررسی می کند که آیا یک کاراکتر قابل چاپ است اما نه یک فاصله
islower - بررسی می کند که آیا یک کاراکتر کوچک است یا خیر
isprint - بررسی اینکه آیا یک کاراکتر قابل چاپ است یا خیر
ispunct - بررسی اینکه آیا یک نماد به علائم نگارشی تعلق دارد یا خیر
isspace - بررسی می کند که آیا یک کاراکتر یک کاراکتر فضای خالی است یا خیر
isupper - بررسی می کند که آیا یک کاراکتر بزرگ است یا خیر
isxdigit - هگزادسیمال بودن یک کاراکتر را بررسی می کند

کار با آرایه های کاراکتر

memchr - یک آرایه را برای یافتن اولین رخداد یک کاراکتر جستجو می کند
memcmp - تعداد مشخصی از کاراکترها را در دو آرایه مقایسه می کند
memcpy - کاراکترها را از یک آرایه به آرایه دیگر کپی می کند
memmove - با در نظر گرفتن همپوشانی آرایه ها، کاراکترها را از یک آرایه به آرایه دیگر کپی می کند
memset - تعداد مشخصی از کاراکترها را در یک آرایه با یک عدد مشخص پر می کند

دستکاری رشته

strcat - یک کپی از یک رشته را به یک رشته داده شده اضافه می کند
strchr - یک اشاره گر را به اولین وقوع بایت کم پارامتر داده شده برمی گرداند
strcmp - دو رشته را به ترتیب واژگانی مقایسه می کند
strcoll - یک رشته را با توجه به پارامتر setlocale با رشته دیگر مقایسه می کند
strcpy - محتویات یک رشته را در رشته دیگر کپی می کند
strcspn - رشته ای را برمی گرداند که شامل کاراکترهای مشخص شده نیست
strerror - اشاره گر را به رشته ای که حاوی پیام خطای سیستم است برمی گرداند
strlen - طول تهی یک رشته را برمی‌گرداند

تصادفی نیست که موضوع رشته ها را در بخش "آرایه ها" قرار دادم. از آنجایی که یک رشته اساساً آرایه ای از کاراکترها است. در اینجا یک مثال است:

char str = "این فقط یک رشته است";

برای درک بیشتر، همان خط را می توان به صورت زیر نوشت:

char str = ("E"، "t"، "o"، """""""""، "r"، "o"، "s"، "t"، "o،"، "s"، "t"، "r"، "o"، "k"، "a")؛

آن ها همچنان همان آرایه است که فقط از کاراکترها تشکیل شده است. بنابراین، می توانید مانند آرایه های عدد صحیح، با آن کار کنید.

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

  1. شما باید کلمه وارد شده را به حروف بزرگ تبدیل کنید:
  2. #عبارتند از
    #عبارتند از

    اصلی ()
    {
    char str = "سرگئی";

    str[i] -= 32;
    }
    برای (int i=0; str[i] != "\0";i++)(
    printf("%c"، str[i]);
    }
    getch();

    بازگشت 0;
    }

    برای دریافت کد یک عدد، به سادگی از مشخص کننده %d در تابع printf استفاده کنید. بله، و یک نکته مهم دیگر: پایان هر خطوطیک پایان دهنده تهی است که با یک کاراکتر خاص - "\0" نشان داده می شود.

راه دیگر برای تعیین رشته این است که آن را با استفاده از char* اعلام کنید. در اینجا یک مثال است:

char *str = "سیم";

آن ها یک اشاره گر به یک رشته ایجاد می شود و در جایی در حافظه قرار می گیرد.

و در اینجا نحوه وارد کردن رشته ها از طریق عملگر scanf که قبلاً برای ما آشناست آمده است:

char str; scanf("%s", str);

در اینجا دو نکته ظریف وجود دارد:

  1. علامت گرفتن آدرس در اینجا مورد نیاز نیست، زیرا نام آرایه، همانطور که قبلاً می دانیم، آدرس است
  2. طول رشته ورودی نباید از 15 کاراکتر تجاوز کند، زیرا آخرین کاراکتر باید یک پایان دهنده تهی باشد. علاوه بر این، خود کامپایلر این نماد را بعد از آخرین نماد وارد شده شما پر می کند.

از آنجایی که زبان C یک زبان ساختاری است، از قبل توابع داخلی برای آن وجود دارد کار با رشته هاو با نمادها برای پردازش رشته ها باید فایل: ctype.h را وارد کنید. فایل حاوی توابعی برای تعیین فرمت حروف و حروف است. اساساً، هر چیزی که ممکن است لازم باشد در مورد یک کاراکتر بدانید را می توان با استفاده از توابع موجود در فایل ctype.h انجام داد

گاهی اوقات ممکن است لازم باشد یک رشته را به نوع داده دیگری تبدیل کنید. برای تبدیل رشته ها به انواع دیگر، کتابخانه stdlib وجود دارد. در اینجا توابع آن آمده است:

  1. int atoi (char *str)
  2. آتل بلند (char *str)
  3. آتوف دوبل (char *str)

گاهی اوقات این توابع بسیار مفید هستند، برای مثال، زمانی که باید سال یا مقدار دیجیتال را از یک رشته استخراج کنید. کار با رشته ها در c (si)موضوع بسیار مهمی است، بنابراین سعی کنید این درس را درک کنید.

روش های کار با رشته ها
روش ساختار و اضافه بار هدف
مقایسه رشته ها
مقایسه کنید() عمومی static int مقایسه (strA strA، string strB)

مقایسه عمومی ایستا (strA string، string strB، bool ignoreCase)

مقایسه ایستا عمومی (strA strA، string strB، StringComparison Type Compare)

مقایسه ایستا عمومی (strA strA، string strB، bool ignoreCase، CultureInfo Culture)

روش استاتیک رشته strA را با رشته strB مقایسه می کند. اگر strA بزرگتر از strB باشد یک مقدار مثبت برمی گرداند. اگر strA کمتر از strB باشد منفی است. و اگر رشته های strA و strB مساوی باشند صفر. مقایسه ها بر اساس ثبت و فرهنگ انجام می شود.

اگر ignoreCase به درستی ارزیابی شود، مقایسه تفاوت بین حروف بزرگ و کوچک را در نظر نمی گیرد. در غیر این صورت این تفاوت ها در نظر گرفته می شود.

پارامتر ComparationType نحوه خاص مقایسه رشته ها را مشخص می کند. کلاس CultureInfo در فضای نام System.Globalization تعریف شده است.

int استاتیک عمومی مقایسه (strA strA، int indexA، string strB، int indexB، int length)

int استاتیک عمومی مقایسه (strA strA، int indexA، string strB، int indexB، int length، bool ignoreCase)

مقایسه بین استاتیک عمومی (strA strA، int indexA، string strB، int indexB، int length، StringComparison Type)

int استاتیک عمومی مقایسه (strA strA، int indexA، string strB، int indexB، int length، bool ignoreCase، فرهنگ CultureInfo)

بخش هایی از رشته های strA و strB را با هم مقایسه می کند. مقایسه با عناصر رشته strA و strB شروع می شود و شامل تعداد کاراکترهای مشخص شده توسط پارامتر طول می شود. اگر بخشی از رشته strA بزرگتر از بخشی از رشته strB باشد، این روش یک مقدار مثبت برمی گرداند. مقدار منفی اگر بخشی از رشته strA کمتر از بخشی از رشته strB باشد. و صفر اگر قسمت های رشته های strA و strB که با هم مقایسه می شوند برابر باشند. مقایسه ها بر اساس ثبت و فرهنگ انجام می شود.

CompareOrdinal() عمومی static int CompareOrdinal(strA stA, string strB)

عمومی static int CompareOrdinal(strA strA, int indexA, string strB, int indexB, int count)

کار مشابه متد ()Compare را انجام می دهد، اما بدون در نظر گرفتن تنظیمات محلی

در مقایسه با() عمومی int CompareTo (مقدار شی)

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

عمومی int CompareTo (strB string)

رشته فراخوان را با رشته strB مقایسه می کند

برابر () عمومی لغو بوول برابر است (object obj)

اگر رشته فراخوان دارای همان دنباله کاراکترهایی باشد که نمایش رشته obj دارد، مقدار بولی را true برمی گرداند. مقایسه ترتیبی حساس به حروف کوچک اما از نظر فرهنگی غیر حساس را انجام می دهد

bool عمومی برابر است (مقدار رشته)

بوول عمومی برابر است (مقدار رشته، نوع مقایسه مقایسه رشته)

اگر رشته فراخوان دارای همان دنباله کاراکترهای مقدار رشته باشد، مقدار بولی را true برمی‌گرداند. یک مقایسه ترتیبی انجام می شود که به حروف بزرگ و کوچک حساس است اما از نظر فرهنگی حساس نیست. پارامتر ComparationType نحوه خاص مقایسه رشته ها را مشخص می کند

بوول استاتیک عمومی برابر است (رشته a، رشته b)

بوول ثابت عمومی برابر است (رشته a، رشته b، نوع مقایسه مقایسه رشته)

اگر رشته a دارای دنباله ای از کاراکترهای مشابه رشته b باشد، مقدار بولی را true برمی گرداند. یک مقایسه ترتیبی انجام می شود که به حروف بزرگ و کوچک حساس است اما از نظر فرهنگی حساس نیست. پارامتر ComparationType نحوه خاص مقایسه رشته ها را مشخص می کند

الحاق (اتصال) رشته ها
Concat() رشته ثابت عمومی Concat (رشته str0، رشته str1);

رشته ثابت عمومی Concat (مقادیر رشته را پارامترها)؛

نمونه‌های رشته‌ای را در یک رشته واحد ترکیب می‌کند (الحاق)
جستجو در یک رشته
حاوی () عمومی bool حاوی (مقدار رشته) روشی که به شما امکان می دهد تعیین کنید آیا یک رشته دارای یک زیررشته خاص (مقدار) است یا خیر.
شروع می شود با() bool عمومی StartsWith (مقدار رشته)

bool عمومی StartsWith (مقدار رشته، نوع مقایسه مقایسه رشته)

اگر رشته فراخوانی با مقدار رشته فرعی شروع شود، مقدار بولی را true برمی گرداند. در غیر این صورت، مقدار بولی false برگردانده می شود. پارامتر ComparationType روش خاصی برای انجام جستجو را مشخص می کند

به پایان می رسد با() bool عمومی EndsWith (مقدار رشته)

bool عمومی EndsWith (مقدار رشته، نوع مقایسه مقایسه رشته)

اگر رشته فراخوانی به مقدار رشته فرعی ختم شود، مقدار بولی را true برمی گرداند. در غیر این صورت، مقدار بولی false را برمی گرداند. پارامتر ComparationType روش جستجوی خاص را مشخص می کند

IndexOf() عمومی int IndexOf (مقدار کاراکتر)

عمومی int IndexOf (مقدار رشته)

اولین رخداد یک زیررشته یا کاراکتر در یک رشته را پیدا می کند. اگر کاراکتر یا زیر رشته جستجو شده یافت نشد، مقدار -1 برگردانده می شود.

عمومی int IndexOf (مقدار کاراکتر، int startIndex)

int عمومی IndexOf (مقدار رشته، int startIndex)

عمومی int IndexOf (مقدار کاراکتر، int startIndex، int count)

عمومی int IndexOf (مقدار رشته، int startIndex، int count)

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

LastIndexOf() نسخه های بارگذاری شده مشابه متد IndexOf() هستند

مانند IndexOf، اما آخرین رخداد یک کاراکتر یا زیررشته را پیدا می کند، نه اولین.

IndexOfAny() عمومی int IndexOfAny(char anyOf)

عمومی int IndexOfAny (char anyOf، int startIndex)

عمومی int IndexOfAny(char anyOf، int startIndex، int count)

شاخص اولین وقوع هر کاراکتری را از آرایه anyOf که در رشته فراخوان یافت می شود، برمی گرداند. جستجو از عنصر مشخص شده توسط startIndex شروع می شود و تعداد عناصر مشخص شده توسط تعداد (در صورت مشخص شدن) را در بر می گیرد. اگر هیچ کاراکتری در آرایه anyOf مطابقت نداشته باشد، متد -1 را برمی‌گرداند. جست و جو به صورت عادی انجام می شود

LastIndexOfAny نسخه های بارگذاری شده مشابه متد IndexOfAny() هستند

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

شکافتن و اتصال رشته ها
شکاف تقسیم رشته عمومی (پارامز جداکننده کاراکتر)

تقسیم رشته عمومی (جداکننده کاراکتر پارامترها، تعداد int)

روشی که یک آرایه رشته‌ای را با زیررشته‌های موجود در این نمونه در داخل برمی‌گرداند که توسط عناصری از char یا آرایه رشته‌ای مشخص شده از یکدیگر جدا شده‌اند.

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

تقسیم رشته عمومی (پارامز جداکننده کاراکترها، گزینه های StringSplitOptions)

تقسیم رشته عمومی (جداکننده رشته، گزینه های StringSplitOptions)

تقسیم رشته عمومی (پارامز جداکننده کاراکترها، تعداد int، گزینه های StringSplitOptions)

تقسیم رشته عمومی (جداکننده رشته، تعداد int، گزینه های StringSplitOptions)

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

اما در همه اشکال، پارامتر option روش خاصی را برای رسیدگی به خطوط خالی که زمانی که دو جداکننده مجاور یکدیگر تولید می شوند، مشخص می کند. شمارش StringSplitOptions تنها دو مقدار را تعریف می کند: هیچ یکو RemoveEmptyEntries. اگر گزینه ها None باشد، رشته های خالی در نتیجه تقسیم نهایی رشته اصلی گنجانده می شوند. و اگر پارامتر options روی RemoveEmptyEntries تنظیم شود، خطوط خالی از نتیجه نهایی تقسیم رشته اصلی حذف می شوند.

پیوستن() پیوستن رشته استاتیک عمومی (جداکننده رشته، مقدار رشته)

رشته استاتیک عمومی Join (جداکننده رشته، مقدار رشته، int startIndex، تعداد int)

یک رشته جدید با ترکیب محتویات یک آرایه از رشته ها می سازد.

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

خطوط پر کردن و پیرایش
Trim() رشته عمومی Trim()

Trim رشته عمومی (params char trimChars)

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

اولین شکل متد Trim() فضاهای اصلی و انتهایی را از رشته فراخوان حذف می کند. و شکل دوم این روش، رخدادهای پیشرو و انتهایی رشته کاراکتر فراخوان را از آرایه trimChars حذف می‌کند. هر دو شکل رشته به دست آمده را برمی گردانند.

PadLeft() رشته عمومی PadLeft (int totalWidth)

رشته عمومی PadLeft (int totalWidth، char paddingChar)

به شما امکان می‌دهد رشته‌ای را با نویسه‌هایی در سمت چپ قرار دهید.

شکل اول متد PadLeft() فضاهایی را در سمت چپ رشته فراخوانی معرفی می کند تا طول کل آن برابر با مقدار پارامتر totalWidth شود. و در شکل دوم این روش، کاراکترهایی که با پارامتر paddingChar مشخص شده اند در سمت چپ رشته فراخوانی وارد می شوند تا طول کل آن برابر با مقدار پارامتر totalWidth شود. هر دو شکل رشته به دست آمده را برمی گردانند. اگر مقدار پارامتر totalWidth کمتر از طول رشته فراخوانی باشد، یک کپی از رشته فراخوانی بدون تغییر برگردانده می شود.

PadRight() همانند PadLeft()

به شما امکان می دهد یک رشته با کاراکترها را در سمت راست اضافه کنید.

درج، حذف و جایگزینی ردیف ها
Insert() رشته عمومی درج (Int startIndex، مقدار رشته)

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

برداشتن() رشته عمومی حذف (int startIndex)

رشته عمومی حذف (Int startIndex، int count)

برای حذف بخشی از یک رشته استفاده می شود. در شکل اول متد Remove() حذف از محلی که با startIndex مشخص شده شروع می شود و تا انتهای خط ادامه می یابد. و در شکل دوم این روش، تعداد کاراکترهایی که توسط پارامتر count تعیین می‌شود، از قسمتی که با نمایه startIndex مشخص شده است، از رشته حذف می‌شود.

جایگزین کردن() رشته عمومی جایگزین (char oldChar، char newChar)

رشته عمومی جایگزین (رشته oldValue، رشته newValue)

برای جایگزینی بخشی از یک رشته استفاده می شود. در شکل اول متد ()Replace، تمام رخدادهای کاراکتر oldChar در رشته فراخوان با کاراکتر newChar جایگزین می‌شوند. و در شکل دوم این روش، تمام رخدادهای رشته oldValue در خط فراخوان با رشته newValue جایگزین می شود.

مورد را تغییر دهید
ToUpper() رشته عمومی ToUpper()

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

برای کاهش() رشته عمومی ToLower()

تمام حروف در رشته فراخوان با حروف کوچک.

گرفتن زیر رشته از یک رشته
زیر رشته () رشته عمومی زیر رشته (int startIndex)

رشته عمومی زیر رشته (int startIndex، int length)

در شکل اول متد ()Substring، رشته فرعی با شروع از مکانی که توسط پارامتر startIndex نشان داده شده است و در انتهای رشته فراخوانی پایان می یابد، بازیابی می شود. و در شکل دوم این روش، یک زیر رشته متشکل از تعداد کاراکترهای تعیین شده توسط پارامتر طول استخراج می شود که از محلی که با پارامتر startIndex مشخص شده است شروع می شود.

برنامه مثال زیر از چندین روش فوق استفاده می کند:

استفاده از سیستم؛ با استفاده از System.Collections.Generic. با استفاده از System.Linq؛ با استفاده از System.Text. namespace ConsoleApplication1 ( class Program ( static void Main(string args) ( // مقایسه دو خط اول string s1 = "This is a string"; string s2 = "This is text, and this is a string"; if (string. CompareOrdinal(s1, s2) != 0) Console.WriteLine("رشته های s1 و s2 برابر نیستند")؛ if (String.Compare(s1, 0, s2, 13, 10, true) == 0) Console.WriteLine ("با این حال، آنها حاوی متن مشابهی هستند")؛ // الحاق رشته ها Console.WriteLine(String.Concat("\n" + "One, two "," three, four")); // جستجو در یک رشته / / اولین وقوع یک رشته فرعی if (s2. IndexOf("this") != -1) Console.WriteLine("کلمه \"this\" در خط یافت شد، آن "+ "در: (0) موقعیت است" , s2.IndexOf("this")); / / آخرین وقوع زیر رشته if (s2.LastIndexOf("this") != -1) Console.WriteLine("آخرین رخداد کلمه \"this\" است " + "at (0) position", s2.LastIndexOf("this" )); // جستجو از آرایه ای از کاراکترها char myCh = ("ы","x","t"); if (s2.IndexOfAny (myCh) != -1) Console.WriteLine("یکی از کاراکترهای آرایه ch "+ "در خط فعلی در موقعیت (0) یافت شد", s2.IndexOfAny(myCh)); // تعیین کنید که آیا خط با زیررشته داده شده شروع می شود if (s2.StartsWith("this is text") == true) Console.WriteLine("Substring found!"); // با استفاده از مثال تعیین رشته سیستم عامل کاربر myOS = Environment.OSVersion.ToString(); if (myOS.Contains("NT 5.1")) Console.WriteLine("سیستم عامل شما ویندوز XP است"); else if (myOS.Contains("NT 6.1")) Console.WriteLine("سیستم عامل شما ویندوز 7 است"); Console.ReadLine(); ))))

کمی در مورد مقایسه رشته ها در سی شارپ

احتمالاً رایج ترین عملیات رشته کاراکتر، مقایسه یک رشته با رشته دیگر است. قبل از اینکه به هر روش مقایسه رشته‌ها نگاه کنیم، باید بر موارد زیر تأکید کنیم: مقایسه رشته‌ها را می‌توان در .NET Framework به دو روش اصلی انجام داد:

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

    و ثانیاً، مقایسه را می توان بدون توجه به تنظیمات فرهنگی، تنها با مقادیر ترتیبی کاراکترهایی که رشته را تشکیل می دهند، انجام داد. به طور کلی، مقایسه‌های غیرفرهنگی رشته‌ها از ترتیب واژگانی (و ویژگی‌های زبانی) برای تعیین اینکه آیا یک رشته بزرگ‌تر، کوچک‌تر یا مساوی رشته‌های دیگر است، استفاده می‌کند. در مقایسه ترتیبی، رشته ها به سادگی بر اساس مقدار تغییر نیافته هر کاراکتر مرتب می شوند.

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

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

کلاس String انواع مختلفی از روش های مقایسه رشته ها را ارائه می دهد که در جدول بالا ذکر شده است. جهانی ترین در میان آنها متد Compare() است. این امکان را به دو رشته می دهد که به طور کامل یا جزئی، حساس به بزرگی یا کوچک و بزرگ، به روشی که توسط پارامتر نوع مشخص شده است، مقایسه شوند. مقایسه رشته هاو همچنین اطلاعات فرهنگی ارائه شده توسط پارامتر نوع فرهنگ اطلاعات.

آن دسته از اضافه‌بارهای متد ()Compare که شامل پارامتری از نوع StringComparison نمی‌شوند، یک مقایسه حساس به حروف و فرهنگ رشته‌های کاراکتر را انجام می‌دهند. و در انواع پرباری که حاوی پارامتر نوع CultureInfo نیستند، اطلاعات مربوط به محیط فرهنگی توسط محیط زمان اجرا فعلی تعیین می شود.

نوع StringComparison یک شمارش است که مقادیر نشان داده شده در جدول زیر را مشخص می کند. با استفاده از این مقادیر، می توانید مقایسه رشته هایی را ایجاد کنید که مطابق با نیازهای برنامه خاص شما باشد. بنابراین، افزودن پارامتری از نوع StringComparison قابلیت‌های متد ()Compare و سایر روش‌های مقایسه مانند ()Equals را گسترش می‌دهد. این همچنین این امکان را فراهم می کند که به طور واضح نحوه مقایسه رشته ها را مشخص کنیم.

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

مقادیر تعریف شده در شمارش StringComparison
معنی شرح
فرهنگ کنونی مقایسه رشته ها با استفاده از تنظیمات محیط فرهنگی فعلی انجام می شود
CurrentCultureIgnoreCase مقایسه رشته ها با استفاده از تنظیمات فرهنگ فعلی انجام می شود، اما به حروف بزرگ و کوچک حساس نیستند
فرهنگ ثابت مقایسه رشته ها با استفاده از غیرقابل تغییر انجام می شود، یعنی. داده های جهانی در مورد محیط فرهنگی
InvariantCultureIgnoreCase مقایسه رشته ها با استفاده از غیرقابل تغییر انجام می شود، یعنی. داده های فرهنگی جهانی و حساس به حروف کوچک و بزرگ
ترتیبی مقایسه رشته ها با استفاده از مقادیر ترتیبی کاراکترهای رشته انجام می شود. در این صورت ممکن است نظم واژگانی مختل شود و قراردادهای اتخاذ شده در یک محیط فرهنگی خاص نادیده گرفته شوند.
OrdinalIgnoreCase مقایسه رشته ها با استفاده از مقادیر ترتیبی کاراکترهای رشته انجام می شود، اما به حروف بزرگ و کوچک حساس نیستند.

در هر صورت، متد Compare() یک مقدار منفی برمی‌گرداند اگر اولین رشته مقایسه شده از رشته دوم کمتر باشد. اگر رشته اول مقایسه شده بزرگتر از رشته دوم باشد مثبت است. و در نهایت، اگر هر دو رشته با هم برابر باشند، صفر می شود. اگر چه متد Compare() در صورت مساوی بودن رشته های مقایسه شده صفر را برمی گرداند، به طور کلی بهتر است از متد Equals() یا عملگر == برای تعیین مساوی بودن رشته های کاراکتر استفاده کنید.

واقعیت این است که متد Compare() برابری رشته های مقایسه شده را بر اساس ترتیب مرتب سازی آنها تعیین می کند. بنابراین، اگر یک مقایسه فرهنگی بین رشته ها انجام شود، ممکن است هر دو رشته از نظر ترتیب مرتب سازی یکسان باشند، اما از نظر ماهیت یکسان نباشند. به طور پیش فرض، برابری رشته ها در متد Equals() بر اساس مقادیر ترتیبی کاراکترها و بدون در نظر گرفتن محیط فرهنگی تعیین می شود. بنابراین، به طور پیش فرض، هر دو رشته در این روش برای برابری مطلق، کاراکتر به کاراکتر، مشابه نحوه انجام آن در عملگر == مقایسه می شوند.

با وجود تطبیق پذیری زیاد متد ()Compare، برای مقایسه های ترتیبی ساده رشته های کاراکتر، استفاده از متد CompareOrdinal() آسان تر است. در نهایت، به خاطر داشته باشید که متد ()CompareTo فقط مقایسه‌های رشته‌ای حساس فرهنگی را انجام می‌دهد.

برنامه زیر استفاده از متدهای Compare()، Equals()، CompareOrdinal() و عملگرهای == و != را برای مقایسه رشته کاراکترها نشان می دهد. توجه داشته باشید که دو مثال مقایسه اول به وضوح تفاوت بین مقایسه رشته های حساس فرهنگی و مقایسه ترتیبی در یک محیط انگلیسی زبان را نشان می دهد:

استفاده از سیستم؛ کلاس مثال ( static void Main( (string str1 = "alpha"; string str2 = "Alpha"; string str3 = "Beta"; string str4 = "alpha"; string str5 = "alpha, beta"; int result; / / ابتدا، تفاوت بین مقایسه رشته های حساس به فرهنگ // و نتیجه مقایسه ترتیبی = String.Compare(str1, str2, StringComparison.CurrentCulture) را نشان دهید. ) Console.WriteLine(str1 + " بزرگتر از " + str2)؛ other Console.WriteLine(str1 + " برابر با " + str2)؛ result = String.Compare(str1, str2, StringComparison.Ordinal)؛ Console.Write(" خطوط مقایسه ترتیبی: ")؛ if (نتیجه 0) Console.WriteLine(str1 + " بزرگتر از " + str2)؛ در غیر این صورت Console.WriteLine (str1 + " برابر با " + str4)؛ // از نتیجه متد CompareOrdinal() استفاده کنید = String.CompareOrdinal(str1, str2)؛ Console.Write("مقایسه رشته ها با استفاده از روش CompareOrdinal():\n")؛ if (نتیجه 0) Console.WriteLine(str1 + " بزرگتر از " + str2)؛ other Console .WriteLine(str1 + " برابر با " + str4); Console.WriteLine(); // تعیین برابری رشته ها با استفاده از عملگر == // این یک مقایسه ترتیبی از رشته های کاراکتر است اگر (str1 == str4) Console.WriteLine(str1 + " == " + str4); // تعریف نابرابری خط با استفاده از عملگر != if(str1 != str3) Console.WriteLine(str1 + " != " + str3); if(str1 != str2) Console.WriteLine(str1 + " != " + str2); Console.WriteLine(); // مقایسه ترتیبی رشته ها بدون حساسیت حروف کوچک // با استفاده از متد Equals() if(String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)) Console.WriteLine("مقایسه رشته ها با استفاده از متد Equals() با " + "پارامتر OrdinalIgnoreCase: \n" + str1 + " برابر است با " + str2); Console.WriteLine(); // مقایسه بخش‌های رشته‌ها if(String.Compare(str2, 0, str5, 0, 3, StringComparison.CurrentCulture) > 0) ( Console.WriteLine("مقایسه رشته‌ها با در نظر گرفتن محیط فرهنگی فعلی:" + "\n3 کاراکترهای اول رشته " + str2 + " بیشتر از 3 کاراکتر اول خط " + str5)؛ ) ))

با اجرای این برنامه خروجی زیر تولید می شود:

بهترین مقالات در این زمینه