نکاتی در مورد رشته ها و شرط ها در سی شارپ
طی یک سری پست قصد داریم در مورد نکاتی مربوط به سی شارپ را ارائه کنیم، در این مقاله نکاتی حول شرط ها ، رشته ها و فرمت بندی آنها بیان بیان خواهد شد. ممکن است بعضی از این نکات را که قصد داریم بیان کنیم از قبل بدانید.
1-ساده سازی چک کردن رشته های خالی و نال (null)
ابتدا کد زیر را در نظر بگیرید:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using System; using static System.Console; namespace string_formatting_tips { class Program { static void Main(string[] args) { while (true) { WriteLine("Enter your name:"); string name =ReadLine(); if (name == null || name == "" || name.Trim() == "") { WriteLine("Please enter your name"); continue; } WriteLine("Hello!" + name); break; } ReadLine(); } } } |
کد فوق از ورودی از کاربر مقدار را دریافت کرده و آن را داخل متغیر name قرار می دهد و سپس اقدام به بررسی مقدار متغییر name خواهد کرد و بررسی می کند که کاربر کارکتر space و یا enter را وارد نکرده باشد.
برای بررسی های خالی بودن و یا null بودن از متد trim و دو شرط دیگر استفاده شده است.
معادل شرط های فوق میتوانیم از متد IsNullOrWhiteSpace همانند زیر استفاده کنیم و خوانایی کد را بهتر کنیم.
1 2 3 4 |
if (String.IsNullOrWhiteSpace(name)) { ... } |
متد IsNullOrWhiteSpace مقدار true بر میگرداند اگر مقداری که به آن پاس میدهیم null و یا شامل white charachter ها باشد.
همچنین متد دیگری تحت عنوان IsNullOrEmpty داریم که این متد هم در صورتی که مقدار ورودی null باشد و یا یک رشته خالی را به عنوان پارامتر به آن پاس بدهیم مقدار true را برمیگرداند.
با استفاده از دو متد فوق که در بالا معرفی شدند، نیازی به کدهای اضافی و تکراری نمی باشد و میتوانیم از توابعی آماده سی شارپ استفاده نماییم.
کد نهایی به صورت زیر خواهد بود :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
using System; using static System.Console; namespace string_formatting_tips { class Program { static void Main(string[] args) { while (true) { WriteLine("Enter your name:"); string name =ReadLine(); if (String.IsNullOrWhiteSpace(name)) { WriteLine("Please enter your name"); continue; } WriteLine("Hello!" + name); break; } ReadLine(); } } } |
2- فرمت بندی شرطی
فرض کنید که لیستی از محصولات دارید و میخواهید اسم هر کالا به همراه امتیازی که دارید را چاپ کنید و همچنین امتیازات منفی و مثبت هستند.
ابتدا ممکن است برای همچین کاری کدی مانند کد زیر را بنویسیم که شامل تعدادی شرط می باشد :
1 2 |
var rating = product.Rating < 0 ? "Bad": product.Rating > 0 ? "Good" : "Not Rated"; WriteLine($"Name: {product.Name} Rating:{rating}"); |
با استفاده از شرط های یک خطی ، چک کرده ایم که اگر رتبه محصول کمتر از 0 بود مقدار Bad را برگرداند و در غیر اینصورت اگر مقدار از صفر بزرگتر بود ،مقدار Good را برگرداند و اگر هیچ کدام از این شرط ها درست نبود یعنی محصول هنوز رتبه ای ندارد و مقدار Not rated را برگرداند و در خط بعدی اسم کالا به همراه رتبه را چاپ کرده ایم.
با استفاده از فرمت بندی رشته، میتوانیم کد فوق را بهینه تر و خوانا تر بازنویسی کنیم.
زمانی که میخواهیم رشته هایی که شامل اعداد هستند را فرمت بندی کنیم، میتوانیم از فرمت بندی سه بخشی استفاده کنیم که ساختار آن به صورت زیر می باشد :
1 |
"(+)#;(-)#;(sorry nothing at all)" |
زمانی که رشته را با دو تا ; (سیمی کولون) از هم جدا میکنیم (منظور سه بخشی است) ، بخش اول برای اعداد مثبت در نظر گرفته می شود، یعنی اگر عدد ما مثبت باشه، بخشی اول رشته برگردانده می شود ، اگر منفی باشد بخش دوم و اگر هیج مقداری نداشه باشد ، بخش سوم برگردانده می شود(میتوانید متن سفارشی مورد نظر خود را برای بخش سوم وارد نمایید).
علامت های مثبت و منفی داخل پرانتز اختیاری هستند و متوانید از آنها صرف نظر کنید.
با یک مثال بهتر متوجه کارکرد این نوع فرمت بندی می شویم .
1 2 |
Console.WriteLine((-4).ToString("positive +#;negative -#;not")); // output : negative -4 |
کد فوق باعث می شود مقدار negative -4 در خروجی چاپ شود چون ، عدد ما منفی است و بخش دوم رشته برگردانده میشود.
و اما کدی که در بالا نوشتیم برای چاپ کردن اسم محصولات به همراه رتبه بندی آنها را میتوانیم با این روش فرمت بندی به صورت زیر بازنویسی کنیم :
1 |
WriteLine($"Name: {product.Name} Rating:{product.Rating.ToString("Good;Bad;Not Rated")}"); |
خروجی کد فوق همانند زیر خواهد بود :
1 2 3 4 5 |
Name: BLACK SUN GLASS Rating:Good 5 Name: BEAUTIFUL HEAD CAP Rating:Good 3 Name: HEAD PROTECTED CAP Rating:Good 5 Name: BORING HEAD CAP Rating:Bad -5 Name: NEW AGE SUN GLASS Rating:Not Rated |
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.