یک string در Go دنبالهای تغییرناپذیر از بایتهاست که لزوماً نباید کاراکترها را نمایش دهند.
یک «لیترال رشتهای» بین دو کوتیشن تعریف میشود:
const name = "Jane"
رشتهها را میتوان با «عملگر» + الحاق کرد:
"Jane" + " " + "Austen"
// => "Jane Austen"
برخی کاراکترهای خاص باید با یک بکاسلش در ابتدا فرار داده شوند، مانند \t برای تب و \n برای خط جدید در رشتهها.
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
پکیج strings شامل توابع مفید زیادی برای کار روی رشتههاست.
برای اطلاعات بیشتر دربارهی توابع رشته، مستندات پکیج strings را ببینید.
در ادامه چند مثال میبینید:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
در همین نزدیکی فروشگاهی لوازم خانگی به نام «Tech Palace» وجود دارد. صاحب فروشگاه بهتازگی یک نمایشگر بزرگ نصب کرده است تا از آن برای پیامهای تبلیغاتی استفاده کند و وقتی مشتریان در ورودی کارت وفاداری خود را اسکن میکنند، سلامی ویژه نشان دهد. این نمایشگر از تعداد زیادی چراغ کوچک LED تشکیل شده است و میتواند چندین خط متن را نشان دهد.
صاحب فروشگاه برای کدی که برای تولید متن نمایشگر جدید به کار میرود به کمک شما نیاز دارد.
صاحب فروشگاه میخواهد برای بیشتر مشتریانی که کارت وفاداری خود را اسکن میکنند، روی نمایشگر "Welcome to the Tech Palace," و پس از آن اسم مشتری با حروف بزرگ نمایش داده شود.
تابع WelcomeMessage را پیادهسازی کنید که اسم مشتری را بهعنوان آرگومانی از نوع string میگیرد و پیام موردنظر را بهصورت string برمیگرداند.
WelcomeMessage("Judy")
// => Welcome to the Tech Palace, JUDY
برای مشتریان وفاداری که خرید زیادی از فروشگاه میکنند، صاحب فروشگاه میخواهد با افزودن خطی از ستاره پیش و پس از پیام خوشآمد، نمایش خوشآمد شیکتر شود. او هنوز مطمئن نیست که در هر خط چند ستاره باید باشد، بنابراین میخواهد این تعداد قابل تنظیم باشد.
تابع AddBorder را بنویسید که پیام خوشآمد (از نوع string) و تعداد ستاره در هر خط (از نوع int) را بهعنوان آرگومان میگیرد.
این تابع باید stringای برگرداند که از ۳ خط تشکیل شده است: خطی با تعداد ستارهی دلخواه، سپس پیام خوشآمد همانطور که دریافت شده، و بعد خطی دیگر از ستارهها.
AddBorder("Welcome!", 10)
باید خروجی زیر را برگرداند:
**********
Welcome!
**********
پیش از نصب این نمایشگر جدید، فروشگاه نمایشگری مشابه داشت که فقط میتوانست خطوط ثابت و غیرقابلتنظیم را نشان دهد. صاحب فروشگاه میخواهد برخی از پیامهای تبلیغاتی قدیمی را روی نمایشگر جدید دوباره به کار ببرد. با این حال، دادهها از قبل شامل حاشیهی ستاره و چند فاصلهی ناخواسته است. وظیفهی شما پاکسازی پیامهاست تا بتوان دوباره از آنها استفاده کرد.
تابع CleanUpMessage را پیادهسازی کنید که پیام تبلیغاتی قدیمی را بهصورت یک رشته میگیرد.
تابع باید ابتدا همهی ستارهها را از متن حذف کند و پس از آن فاصلههای ابتدا و انتهای متن باقیمانده را بردارد.
سپس باید پیام پاکسازیشده را برگرداند.
message := `
**************************
* BUY NOW, SAVE 10% *
**************************
`
CleanUpMessage(message)
// => BUY NOW, SAVE 10%