آموزش روبی 2 - رشته ها

ruby
tutorial

#1

سلام دوستان امروز میخوایم در مورد رشته ها در روبی صحبت کنیم که مبحث مهم و شیرینی خواهد بود .

مقدمه

وقتی شما از رشته ها استفاده میکنید باید حتما بین quotation قرار بدید . و اگر متن یا جملتون بین کوتیشن قرار نگرفت ، با ارور مواجه خواهید شد .
همچنین شما میتوانید از هردو quotation تک ، یا جفت quotation استفاده کنید . ولی یادتون باشه که در اول و اخر جمله قرار بگیره و همچنین مشابه هم باشه ( یکی " , یکی ’ ) نباشه :grin:

مثلا به این شکل

"hello world how are you"

'hello dear im fine'

String interpolation

String interpolation چیست؟
خب سوال خوبیه ، ما با این روش میتونیم یک جمله داینامیک داشته باشیم . به مثال زیر دقت کنید

puts "what is your favorite color"
color = gets.chomp
puts "my favorite color is #{color} and i love that."

خب وقتی خروجی رو میبنید میفهمید که ان چه که به عنوان رنگ مورد علاقه ذخیره شده بود در جمله رنگ مورد علاقه من … در اومد.

دیدید که ما با یک علامت # و قرار دادن یک متغیر در curly brackets ها ، تونستیم جوابی که ذخیره کرده بودیم رو نمایش دهیم .

حال بیاین به جای double quotation از single quotation استفاده کنید و ببینید چه مشکلی پیش میاد.

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

String manipulation

در این بخش نیز در مورد تغییرات مقدار و یا نوع رشته ها بحث خواهیم کرد .

که لازم به ذکر است تغییرات ظاهری رشته ها در اخر به صورت یک مقدار جدید خواهد بود .

هیچ کدوم از متد های استفاده شده در این بخش تغییری در رشته ایجاد نمی کنند, همه اینها رشته جدید درست می کنند.

  • lower case کردن

با این متد میشه رشته هامون رو به صورت lower case یا همون حرف کوچک در اورد . به این شکل:

"ESTEGHLAL".downcase
  • capital letters کردن

با این روش نیز میشه جمله ها و متن هارو به صورت capital در اورد . به این صورت :

"persepolis".upcase
  • swap case

در این حالت نیز از capital بود به lowercase و اگر lowercase بود به شکل capital در میاره .

"juventus".swapcase

و در اخر اگر میخواهید که کلمه یا متنتون به شکل برعکس دربیاد هم باید به این صورت عمل کنید :

"barcelona".reverse

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

Method chaining

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

"esteghlal".upcase.reverse 

بنویسیم … متن ما هم به صورت capital و هم به صورت برعکس خواهد شد .

که به این روش Method chaining میگویند که در اینده بسیار مفید خواهد بود .

!Give it a bang

در زبان روبی شما اگر اخر متد یه علامت ! بزارید یا یه متدی ببینید که در اخرش علامت تعجب قرار گرفته شما اونو به صورت bang میخونید یعنی بطور مثال !my_method که میخونید (مای متد بنگ).
خب این یعنی چی؟

  • وقتی میخوایم داده یک متغییر به صورت پایدار شکل بگیره از bang استفاده میکنیم.
  • عموما وقتی علامت تعجب در اخر یک متد قرار میگیره به این معنیه که مقادیر یا رشته های اصلی و اورجینال متد تغییر کرده است .
    توجه => بازم بازش ترش میکنم ولی صبر کنین که اول یه چیز دیگه ای یاد بگیریم بعد .

جایگزینی رشته ها

ما در این بخش یاد خواهیم گرفت که چطور چند کلمه رو با هم در جمله ای جایگزین یا معاوضه کنیم .
به این صورت که ما رشته ای رو توی یک متغییر به این شکل قرار دادیم .

x = "rabbit faster than turtle"

حالا میخوایم کلمه rabbit رو با turtle عوض کنیم … که باید از متد sub استفاده کنیم .
به این شکل عمل کنیم :

x = "turtle faster than turtle"
x.sub "turtle" "rabbit"

که نتیجه این کد جایگزینی کلمه turtle در اول جمله با rabbit خواهد بود .
باید بدونید که متد sub دو تا ورودی رو بهش پاس دادیم (در اینده راجع به ورودی ها و متد ها حرف خواهیم زد )
که اولی کلمه ای است که میخواهیم در جمله مورد نظر پیدا کنیم و ورودی دوم هم برای جایگزینی کلمه پیدا شده استفاده میکنیم.

تذکر => متد sub تنها اولین کلمه یافت شده رو جایگزین کلمه مورد نظر خواهد کرد.

تذکر => اگر جمله ی شما طولانی بوده و همچنان کلمه مورد نظر که میخواهید جایگزین شود در جمله مکررا تکرار شده بود . باید از متد gsub استفاده کنید که به صورت global یا همون سراسری جمله مورد نظر رو میگرده و همه کلمات همخوان یافته شده رو جایگزین کلمه مورد نظر شما میکند .

در بالا گفتم که در مورد bang بیشتر صحبت خواهیم کرد . الان وقتشه .
الان ما میخواهیم تفاوت بین sub و !sub رو بدونیم :

بیاین دوباره برگردیم به کد قبلی و یک بار دیگر بعد جایگزینی دوباره متغییرمون رو چاپ کنیم و ببینیم چه اتفاقی میفته.

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

الانه که بیایم متدمون رو بنگ کنیم و ببینیم چه اتفاقی میفته :no_mouth:

حالا فرق بنگ کردن متد رو فهمیدید؟ .
پس اگه ما بخواییم که تغییرات داده ما به صورت پایدار باقی بمونه میتونیم متدمون رو bang کنیم .

Split, strip, and join در رشته ها

strip

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

str = " you are the best "
puts str.strip

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

split

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

str = "this rainbow is so beautifull"
puts str.split

خروجی به این صورت خواهد بود

همچنان میتوانیم با استفاده از متد size و به اصطلاح chain کردن که خوندیم ، سایز کلمه هایی که به ارایه تبدیل شده اند رو بدست بیاریم .

puts str.split.size

همچنین میتوان تعداد حروف رو نیز بدست اورد (space نیز شمرده میشه) ، به این شکل :

puts str.split(//).size

join

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

فرض کنید ما یک جمله ای به این شکل داریم .

str = "catredisthis"

و ما میخوایم اونو به شکل this is red cat در بیاریم . یعنی برعکسش کنیم و بینشون هم فاصله قرار بدیم.
چطور انجامش میدیم ؟ خب خیلی راحت اول متغییرمونو میگیریم و split میکنیم تا به یک ارایه تبدیل بشه . و حالا هر کلمه از جمله رو داریم . بعد با متد reverse کلمه هارو بعکس میکنیم . (یعنی جاشون برعکس میشه ) و بعد با متد join اونارو دوباره به هم وصل میکنیم . و تموم شد . حالا تو کد ببینیمش :

توجه کنید که به جای فاصله تو متد join میتونید هر کاراکتری قرار بدید که بر اساس اون کلمه هارو به هم وصل کنه.


آموزش روبی (Ruby)
#2

دستت درد نکنه. می بینم که از FG42 استفاده می کنی


#3

بله اقا سمیر . واقعا ازش راضیم … درسته که هنوز نمیتونم از همه قابلیت هاش بهره کافی رو ببرم . ولی تا الان که همه چیز خوب پیش رفته . دست خودتون درد نکنه :smile::blush::rose::heartpulse::pray:


#4

هیچ کدوم از متد های استفاده شده در این بخش تغییری در رشته ایجاد نمی کنند, همه اینها رشته جدید درست می کنند.