رزرو مشاوره تلفنی تک جلسه‌ای با استاد رضوی
رزرو مشاوره تلفنی
کنکور کامپیوتر
0
اشتراک
 

رشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسی

این مقاله به معرفی رشته (String) یا استرینگ در برنامه نویسی، رشته در پایتون، رشته در C++ و همین طور الگوریتم‌های معروف مربوط به رشته ها در برنامه نویسی پرداخته

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

رشته یا استرینگ در برنامه نویسی چیست؟

قبل از آشنایی با رشته یا String، لازم است تعریف کاراکتر در برنامه نویسی را بدانید. در علم کامپیوتر، یک کاراکتر واحد نمایش اطلاعاتی است که معادل یک حرف یا علامت (سمبل) است مانند ‘a’ یا ‘2’ یا ‘#.’ رشته یا استرینگ در برنامه نویسی، آرایه‌ای از کاراکترها می‌باشد. در ادامه به پیاده سازی و کار کردن با رشته ها در چند زبان برنامه نویسی معروف می‌پردازیم.

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

از آنجا که زبان پایتون، زبان سطح بالا و نزدیک به زبان انسان می‌باشد، با این زبان آغاز به کار می‌کنیم. رشته‌ها را در پایتون می‌توان با استفاده از Single Quote، Double Quote یا حتی با Triple Quote در مواردی که رشته خیلی طولانی است، ایجاد کرد.

String1 = 'Hello There!'
String2 = "Konkurcomputer"
String3 = '''Welcome to the Konkurcomputer website, I'm your host.'''

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

print(String1[0]) # H

print(String1[1]) # e

print(String1[-1]) # !

print(String1[2:5]) # llo

print(String2[4:]) # urcomputer

print(String2[:4]) # konk

خط اول، اندیس صفرم رشته String1 را در خروجی چاپ می‌کند که چون شماره‌گذاری اندیس‌ها از صفر آغاز می‌شود، اولین کاراکتر را برمی‌گرداند. خط دوم، اندیس اول یعنی دومین کاراکتر را چاپ می‌کند. خط سوم با گذاشتن عدد منفی پشت اندیس از آخر شروع به چاپ می‌کند، مثلا در این مثال آخرین کاراکتر رشته را چاپ می‌کند. خط چهارم با گذاشتن علامت ":" بازه‌ای از رشته ها را برمی‌گرداند، با شروع از اندیس 2 تا اندیس 5 بجز خود 5. خط 5 چون اندیسی برای انتها مشخص نشده است، شروع به چاپ String2 از اندیس 4 تا اندیس آخر می‌کند و خط آخر برعکس خط 5 عمل می‌کند.

برای اتصال رشته ها به هم می‌توان از "+" به‌صورت زیر استفاده کرد:

print(String1[0:2] + 'p' + String1[3:]) # Heplo!
        # He                # lo!

از آنجا که پایتون یک زبان شی گرا (Object-Oriented) است، هر رشته هم یک شی است که به‌طور پیش‌فرض در پایتون وجود دارد، برای آن تعداد زیادی متد تعریف شده که می‌توان از آنها برای انجام کارهای مختلف استفاده کرد. برای این مقاله فعلا همین که نحوه استفاده از متدها را بدانید، کافی است. تعدادی از متدهای پرکاربرد در ادامه آمده است:

کاربرد متد
تعداد تکرار رشته val را در یک رشته برمی‌گرداند Str.count(val)
در رشته دنبال زیررشته val می‌گردد و جایگاه اولین رخداد Val را برمی‌گرداند. Str.find(val)
اگر تمام کاراکترهای رشته الفبا باشد مقدار True برمی‌گرداند. Str.isalpha()
لیست یا تاپل val متشکل از چندین رشته را به هم متصل و به یک رشته واحد تبدیل می‌کند. Str.join(val)
حروف بزرگ انگلیسی را به حروف کوچک تبدیل می‌کند. Str.lower()
یک رشته را با یک جداکننده جدا می‌کند و یک لیست از رشته های جدا شده برمی‌گرداند. Str.split(val)

در ادامه نحوه یادگیری از این متدهای معروف را خواهیم دید:

text = "I love cars, seeing a new car makes me happy"
x = text.count("car")
print(x) # 2

text = "welcome to Konkurcomputer"
x = text.find("Konkurcomputer")
print(x) # 11

txt = "CompanyX"
x = txt.isalpha()
print(x) # True

myTuple = ("Ali", "goes", "to", "school")
x = "*".join(myTuple)
print(x) # Ali*goes*to*school

text = "Happy New YEAR"
x = text.lower() 
print(x) # happy new year

text = "welcome to the jungle"
x = text.split(' ') 
print(x) # ['welcome', 'to', 'the', 'jungle']

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

رشته در C++

C++ دو نوع نمایش رشته زیر را ارائه می‌دهد:

  • The C-Style Character String
  • The String Class in C++

روش اول مشابه روش نمایش رشته‌ها در زبان برنامه نویسی C می‌باشد. در روش دوم از کلاس String در C++ استفاده می‌شود. در ادامه به‌طور دقیق‌تر این دو روش را بررسی می‌کنیم.

 در این تصویر رشته "Hello" در زبان برنامه نویسی سی پلاس پلاس نشان داده شده  است

روش C-Style یا مشابه زبان C

این روش از زبان C سرچشمه می‌گیرد و همچنان در C++ پشتیبانی می‌شود. در این روش، یک استرینگ در واقع یک آرایه یک بعدی از کاراکترهاست که با یک کاراکتر تهی '\0' خاتمه می‌یابد. این پایان یافتن با کاراکتر تهی مهم است زیرا به کامپایلر (Compiler) می‌گوید که رشته کجا تمام می‌شود. برای تعریف یک رشته به این روش می‌توان به یکی از دو شکل زیر عمل کرد:

char my_str[6] = {'H', 'e', 'l', 'l', 'o', '\0'};

char myStr[] = "Hello";

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

 cout<<my_str<<endl; // Hello
 cout<<myStr<<endl; // Hello
 cout<<sizeof(my_str)<<endl; // 6
 cout<<sizeof(myStr)<<endl; // 6

توجه کنید در اینجا از تابع sizeof() برای یافتن طول رشته استفاده می‌شود.

در این تصویر رشته "Hello" در یک آرایه به همراه اندیس کاراکترها نمایش داده شده است

کلاس string در C++

کتابخانه استاندارد C++ یک نوع کلاس رشته‌ای را ارائه می‌دهد که از تمام عملیات ذکر شده در بالا پشتیبانی می‌کند، علاوه بر این، عملکردهای بسیار بیشتری را نیز پشتیبانی می‌کند. استفاده از کلمه کلیدی "string" بهترین و راحت‌ترین راه برای تعریف رشته است:

string str1 = "Hello";

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

string str1 = "C++ is the best!";
char str2[] = "So is Konkurcomputer";
cout << str1.substr(7) << endl; // the best!
cout << str1.substr(8, 2) << endl; // he
cout << str2.substr(5) << endl; // ERROR

تابع str.substr(a, b) برای کلاس string در C++ می‌باشد و به این صورت عمل می‌کند که زیر رشته با آغاز از a به طول b را برمی‌گرداند. اگر مقدار b را مشخص نکنیم تا انتهای رشته برگردانده می‌شود. همانطور که در قطعه کد بالا مشخص است در صورت استفاده از این تابع برای رشته‌های از نوع C-Style با خطا روبه‌رو می‌شویم. در ادامه به چند مورد از توابع معروف رشته های کلاس string در C++ اشاره می‌کنیم:

برای یادگیری بهتر کار با رشته ها به‌طور عملی به قطعه کد زیر و خروجی‌های متناظرشان دقت کنید:

کاربرد متد
طول رشته مورد نظر را برمی‌گرداند. Str.length()
این تابع برای خواندن یک رشته وارد شده توسط کاربر استفاده می‌شود. .getline(a,b)
این تابع برای افزودن کاراکترها در انتهای یک رشته استفاده می‌شود. Str.push_back(a)
این تابع برای حذف 1 کاراکتر از انتهای یک رشته استفاده می‌شود. Str.pop_back()
این تابع برای افزایش یا کاهش اندازه یک رشته استفاده می‌شود. Str.resize(a)
یک زیررشته b کاراکتری با شروع از اندیس c از رشته Str را در رشته a که بصورت C-Style تعریف شده، کپی می‌کند. Str.copy(a,b,c)
 string str1 = "C++ is the best!";
 cout << str1[2] << endl; // +
 cout << str1.length() << endl; // 16 
 str1.push_back(' ');
 str1.push_back('K');
 str1.push_back('O');
 cout << str1 << endl; // C++ is the best! KO
 str1.pop_back();
 cout << str1 << endl; // C++ is the best! K
 str1.resize(10); 
 cout << str1 << endl; // C++ is the
 str1.copy(str2, 4, 5);
 cout << str2 << endl; // s th

توابع معرفی شده در زبان‌های پایتون و C++ بسیار بیشتر از موارد گفته شده است و شما ‌توانید با بررسی Documentationهای هر زبان با توابع بیشتری آشنا شوید.

جمع‌بندی

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

چطور می‌توان طول یک رشته را پیدا کرد؟

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

Regex یا Regular Expressions چیست و چه ارتباطی با رشته دارد؟

عبارات منظم (Regular Expressions) که به عنوان Regex نیز شناخته می‌شوند، دنباله ای از کاراکترها هستند که یک الگوی جستجو را در مجموعه رشته ها تعریف می‌کنند و در بسیاری از زبان‌های برنامه‌نویسی و ویرایشگرهای متن برای جستجو، جایگزینی و دستکاری متن بر اساس یک الگو استفاده می‌شوند.

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

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

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

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

آیا می‌توان یک رشته را به یک Integer تبدیل کرد؟

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

امتیازدهی51111111111امتیاز 5.00(1 امتیاز)
اشتراک
تلگرام اینستاگرام تماس با پشتیبانی: 09378555200 تماس با پشتیبانی: 09378555200
خدمات ما پشتیبانی کنکور کامپیوتر

سؤالی داری؟ از هر راهی که راحت‌تری.

تماس با پشتیبانی۰۹۳۷۸۵۵۵۲۰۰ پشتیبانی در تلگرامپاسخ‌گویی پیامی کانال تلگراماخبار و اطلاعیه‌ها اینستاگرامkonkurcomputer.ir
اشتراک‌گذاری این مطلب

رشته یا String چیست ⚡️ نحوه کار با استرینگ در برنامه نویسی

تلگرام واتس‌اپ ایکس
https://www.konkurcomputer.ir/رشته-یا-string-چیست-و-نحوه-کار-با-استرینگ-در-برنامه-نویسی-چگونه-است.html
خدمات کنکور کامپیوتر
هر چیزی که برای قبولی لازم داری، یک‌جاخدمات ما

از مشاوره‌ی شخصی با استاد رضوی تا فیلم‌های دروس، پلتفرم‌ها و ابزارهای رایگان

مشاوره‌ی شخصی با استاد رضوی
تماس با پشتیبانی