-
بخش چهل ام
تعیین سایز آرایه پس از اجرا سایز آرایه بیانگر تعداد آیتمهایی هست که میتواند در خود نگهداری کند. شما تعریف آرایه با یک سایز معینی را بدین شکل فرا گرفتید:
int[] Array;
Array = new int[10];
و یا:
int[] Array = new int[10];
همانطور که در مقدمه برای شما آورده شد، مشکلی که ممکن است برای شما بوجود بیاید این است که باید پس از اجرای برنامه، سایز آرایه تعیین شود.
ما بدین شکل عمل خواهیم کرد با اضافه کردن یک Text Box و Button، سایز مورد نظر کاربر را از طریق Text Box دریافت کنیم و پس از کلیک کردن بر روی button، سایز آرایه را تعیین کنیم.
از پروژهای که از پیش داشتیم، فرمتان را به شکل زیر در آورید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
همانطور که میبینید ما بصورت پیشفرض، مقدار ۵ را در Textbox وارد کردیم؛ شما میتوانید هر مقداری را که مورد نیاز خودتان است، وارد نمایید!
بر روی Button خود دوبار کلیک کنید تا وارد بخش کدنویسی شوید. کدهای زیر را وارد کنید:
int aNumber = int.Parse(textBox1.Text);
int[] arraySize = new int[aNumber];
خط اول در کد مقدار وارد شده در TextBox را دریافت میکند و به عدد صحیح تبدیل کرده و در متغیر aNumber ذخیره میکنیم. سپس این مقدار را در خط بعدی به آرایه مورد نظر ما اعمال میکنیم.
حلقه زیر را نیز در ادامه کدهایتان قرا دهید تا مقدار دهی به آرایه مورد نظرتان انجام شود:
for (int i = 0; i != (arraySize.Length); i++)
{
arraySize[i] = i+1;
listBox1.Items.Add(arraySize[i]);
}
برنامه خود را مجدداً اجرا کنید و بر روی Button کلیک کنید؛ چنین چیزی را مشاهده خواهید کرد:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حال مقدار ۵ را حذف کنید و عدد دیگری را وارد کنید؛ خواهید دید که آرایه شما مقدار دهی جدیدی را خواهد داشت. یعنی در واقع در حالی که برنامه در حال اجراست (Run-Time) شما به آرایه خودتان سایزهای متفاوتی را منتسب میکنید.
-
بخش چهل و یکم
آرایههای چندبعدی چیزی که تا کنون برای تعریف آرایهها داشتیم، مشابه شکل زیر بود:
int[] array = new int[5];
که در واقع، ۵ خانه از حافظه را به شکل سطری و پشت سر هم رزرو میکند. به جدول زیر نگاه کنید؛ متوجه سطری بودن یک آرایه میشوید؛ بدین شکل که در هر Position (محل) از حافظه که مختص این آرایه هست، مقداری ذخیره شده است.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
حال فرض کنید که بخواهیم که در یک آرایه، به جای سطر(ها)، همزمان هم سطر داشته باشیم و هم ستون؛ در واقع یک آرایهی دو بعدی میخواهیم که به ازای هر یک خانه از سطرها، چندین ستون داشته باشد. به جدول زیر دقت کنید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای اینکه یک آرایه دو بعدی در سیشارپ پیاده سازی کنیم، از دستور (Syntax) زیر استفاده میکنیم:
int [ , ] arrayTimes;
سپس بایستی آن را new کنید که برای مثال بدین شکل آن را new میکنیم:
arrayTimes = new int[5, 3];
به دو رقم ۵ و ۳ دقت کنید؛ رقتم اول، محل سطرها هست و رقم دوم، ستونهای موجود برای هر یک سطر میباشد.
استفاده از یک آرایه دو بعدی، هر چند بعضی وقتها واقعاً یک نیاز است، اما خوب، از لحاظ بهینه بودن در بعضی مواقع دچار تردید خواهید شد؛ چرا که برای دسترسی به عناصر آن، میبایست از دو حلقه تو در تو استفاده کنید!
کدهای زیر را برای یک button تعریف کنید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و با اجرای فرم خود و کلیک بر روی Button، چنین چیزی را خواهید داشت:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
توجه کنید که مبحث آرایههای چند بعدی، تنها به دو بعد مختص نیست؛ شما میتوانید به همین شکل، آرایههای سه بعدی (مکعبی) و بیشتر نیز ایجاد کنید!
-
بخش چهل و دوم
- بکارگیری رشتهها در آرایهها
با استفاده از پروژههای سابق، یک button به فرم خود اضافه کرده و مشخصه Text آن را به String Arraysتغییر دهید. روی آن دابل کلیک کنید تا وارد بخش کدنویسی آن شوید.
برای اینکه متنی را در آرایه ذخیره کنید، میبایست نوع آرایه را از جنس string انتخاب کنید؛ شکل کلی تعریف آرایه همچنان ثابت خواهد ماند.
string[] arrayStrings;
arrayStrings = new string[5];
بنابراین کد بالا آرایهای با ۵ خانه برای شما در حافظه رزرو خواهد کرد که بتواند مقادیری از اون متن در خود ذخیره کند.
اکنون این ۵ خانه را مقدار دهی میکنم؛ دقیقاً به همان شکلی که آرایههای int را مقدار دهی میکردیم:
arrayStrings[0] = “This”;
arrayStrings[1] = “is”;
arrayStrings[2] = “a”;
arrayStrings[3] = “string”;
arrayStrings[4] = “array”;
کدهای بالا را نیز به کدهای مربوط به button جدید خود اضافه کنید تا در ادامه حلقهی ForEach را برای شما معرفی کنیم.
حلقهای جدید با نام ForEach
همانند قبل، برای اینکه به تکتک خانههای موجود در آرایهی خود دسترسی پیدا کنید، میبایست که از یک حلقه for استفاده کرده تا در تکتک خانههای موجود گشت بزنید و مقادیر آنها را به خروجی بدهید. چیزی شبیه به کد زیر:
for (int i=0; i != (arrayStrings.Length); i++)
{
listBox1.Items.Add(arrayStrings[i]);
}
اما ما حلقهی دیگری داریم که تا کنون با آن آشنا نبودهاید که به آن حلقه foreach میگویند. این حلقه زمانی برای شما کاربرد خواهد داشت که در حال کار کردن با «مجموعه»ای از مقادیر هستید. نحوهکار کردن با این حلقه را برای شما توضیح خواهیم داد، اما فعلاً کد زیر را بجای کد بالا در ادامه کدهایتان قرار دهید:
foreach (string ArrayElement in arrayStrings)
{
listBox1.Items.Add(ArrayElement);
}
کد بالا که در Visual Studio کپی کردهاید، به کلمات کلیدی (Keywords) که با رنگ آبی مشخص میشوند دقت کنید که در کجاها قرار گرفتهاند. شما ابتدا با کلمه foreach شروع کرده و به همراه آن، یک جفت پرانتز باز-بسته در مقابل آن قرار داده و با اضافه کردن یک جفت براکت باز-بسته، محدود حلقه خود را مشخص میکنید.
به کد موجود در میان پرانتز دقت کنید؛
string ArrayElement in arrayStrings
در واقع کد بالا حاوی دو بخش است که ما آن را در یک بخش مینویسم. در قسمت اول، یعنی string ArrayElement، شما یک متغیر جدیدی از همان نوع (string) تعریف میکنید. این متغیر جدید، المانهای موجود در هر یک (معنی کلمه for each) از مکان موجود در آرایهی خود را در نزد خودش نگهداری میکنید. در قسمت دوم، مکانیست که شما به سیشارپ میگویید که نام آرایه/مجموعه شما چیست که پس از استفاده از کلمه کلیدی in، نام آن را مینویسید.
در واقع این حلقه در هر مرحله از اجرای خود، تکتک خانههای آرایه/مجموعه نامبرده شده را گشت میزند، آن را در ArrayElement ذخیره میکند و سپس آن را به listBox اضافه میکند. به عکس زیر هم دقت کنید که مفهوم حلقه foreach را برای شما سادهتر میکند:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نرمافزار خود را اجرا کنید؛ بر روی button جدید کلیک کرده، میبایست نتیجه مشابه زیر باشد:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-
بخش چهل و سوم
استفاده از List<> همانطور که از نامش پیداست، مفهومی که با آن سر و کار داریم یک «لیست» است؛ یعنی زمانی از آن استفاده میکنیم که بخواهیم آیتم جدیدی به آن اضافه، آیتمی را از آن حذف و یا در آن جستجو کنیم؛ یا مثلاً اطلاعات وارد شده را Sort (مرتب) کنیم و …
برای مثال، شما معلمی هستید که در کلاس خود ۱۰ دانشآموز حضور دارند. شما میتوانید لیستی از دانشآموزان خود درست کنید که اسامی آنها را ذخیره کرده، اگر آنها را بر اساس حروف الفبا مرتب کنید، دانشآموز جدیدی را اضافه کنید و یا دانشآموزشی را از آن حذف نمایید. اگر از یک آرایه معمولی استفاده کنید، میدانید که انجام کارهای فوق بسیار سخت است.
اکنون Visual Studio را اجرا نموده و یک پروژه جدید ایجاد نمایید. یک Button و Listbox اضافه کنید. بر روی Button خود دابل-کلیک کنید تا وارد بخش کدنویسی مربوطه شوید. به کدهای آماده (خصوصاً کدهای بالا) دقت کنید. الان شما کدهایی را میبینید که با Using شروع میشوند.
Using مربوط به List<>، همانی هست که کد آن بدین شکل است: System.Collections.Generic
اگر نمیتوانید آن را ببینید، خودتان آن را بصورت دستی اضافه کنید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
نحوه نعریف یک لیست در سیشارپ بهشکل زیر میباشد:
List<string> students = new List<string>();
ابتدا با کلمه کلیدی List شروع کرده، در داخل علامتهای مربوطه نوع لیست خودتان را انتخاب میکنید و پس از ایجاد یک فاصله (Space)، نام متغیر را تعیین میکنید و در نهایت، آن را new میکنید. کدهای شما میبایست که به شکل زیر شده باشند:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اکنون زمان اضافه کردن اطلاعات به لیست خود میباشید. برای اضافه کردن اطلاعات به لیست خود، میتوانید پس از ذکر نام لیست خود که انتخاب کردهاید، از متد Add استفاده نمایید. به کدهای زیر دقت کنید:
students.Add(“Jenny”);
students.Add(“Peter”);
students.Add(“Mary Jane”);
کدهای شما اکنون بدین شکل خواهند بود:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای دسترسی به لیست خود نیز میتوانید از حلقه foreach استفاده کنید. کد زیر را اضافه کنید:
foreach (string child in students)
{
listBox1.Items.Add(child);
}
بدین ترتیب که ما با استفاده از این حلقه در این لیست در حال گردش هستیم. اگر هم میخواهید از لحقه معمولی For استفاده کنید، میتوانید از کد زیر استفاده نمایید:
for (int = 0; i <students.Count; i++)
{
listBox1.Items.Add(students[i]);
}
دقت کنید که Count در student.Count تعداد آیتمهای موجود در لیست را برمیگرداند.
اما پیشنهاد میشود که در لیستها از حلقههای Foreach استفاده کنید.
کدهای خودتان را اجرا کنید؛ نتیجه را خواهید دید!
مرتبسازی لیست
یکی از مهمترین کارهایی که میتوان در List<> انجام داد، مرتبسازی آن میباشد. شما میتوانید با استفاده از متد Sort()، اقدام به مرتبسازی مقادیر موجود در داخل لیست اقدام نمایید. به کد زیر دقت کنید:
students.Sort();
اگر کد زیر را پیش از نمایش آیتمها در Listbox اضافه کنید، خواهید دید که نتیجهی حاصل، یک لیست مرتبشده بر اساس حروف الفبا میباشد. اگر نوع لیست را از نوع عدد میگرفتید، نتیجهی حاصل، بر اساس ترتیب اعداد میبود.
برای اینکه لیست خود برعکس کنید، میتوانید از متد Reverse() استفاده کنید. به کد زیر دقت کنید:
stundents.Reverse();
حذف مقدار از List<>
شما میتوانید از دو روش مقادیر موجود در لیست را حذف کنید؛ یا اینکه مقدار مورد نظر را میدانید و آن را به تابع میگویید تا آن را حذف کند، و یا یک رنجی از میخواهید حذف کنید که باید شماره محل قرار گرفتن آن را به متد پاس دهید. این کارها توسط دو متد Remove و RemoveRange انجام میشود. به کدهای زیر دقت کنید:
student.Remove(“Peter”);
این کد، آیتم مربوط به Peter را حذف میکند.
student.RemoveRange(0, 2);
این کد، اولین مقدار (که در اینجا صفر است) محل شروع حذف کردن را به شما میگوید و مقدار دوم (که ۲ میباشد) تعداد خانههای بعد از اولین مقدار (که اینجا صفر است) را که میخواهید حذف کنید را از شما میگیرد.
-
بخش چهل و چهارم
آشنایی و استفاده از Hashtable ما زمانی از Hashtableها استفاده میکنیم که میخواهیم آیتمهایی را به مجموعهی خود اضافه کنیم که براساس کلید/مقدار باشند. شاید برایتان کمی مفهوم کلید/مقدار (Key/Value) ناآشنا باشد، پس با یک مثال با هم جلو میرویم.
برای مثال، نام یک دانشآموز و نمرهی او در امتحان. در واقع شما میتوانید چنین مقادیری را در Hashtable اضافه کنید؛ یعنی میتوانید نوع string و int را با همدیگر مخلوط کنید.
به فرمی که در جلسه پیش ساختهایم، یک Button اضافه کنید؛ بر روی آن دابل کلیک کنید. ابتدا به قسمت بالای کدها (بخش Usingها) دقت کنید. توجه داشته باشید که برای استفاده از Hashtable، میبایست از Using زیر استفاده کنید:
using System.Collections;
شما تا الان عبارت System.Collections.Generic را داشتهاید، اما Hashtable جزو این namespace نیست، بلکه جزو namespace با نام Collections میباشد.
در داخل بخش کدنویسی مربوط به Button جدید خود، با استفاده از کد زیر یک Hashtable تعریف کنید:
Hashtable students = new Hashtable();
با استفاده از کد بالا، شما شیءای با نام Students از نوع Hashtable تعریف میکنید. برای اینکه به این Hashtable مقدار بدهید (آیتمهایی را به آن اضافه کنید)، شما دو راه پیش رو خواهید داشت. یعنی در واقع اینکار به دو روش انجام میشود.
راه اول:
students[“Jenny”] = ۸۷;
students[“Peter”] = “No Score”;
students[“Mary Jane”] = ۶۴;
students[“Azhar”] = ۷۹;
راه دوم:
students.Add(“Jenny”, ۸۷);
students.Add(“Peter”, “No Score”);
students.Add(“Mary Jane”, ۶۴);
students.Add(“Azhar”, ۷۹);
کارهایی که در کدهای بالا در حال انجام است کاملاً مشخص است؛ نام دانشآموز در ابتدا قرار میگیرد و در مقابل آن نمرهی مربوط به امتحان او وارد میشود.
اما باید به نکتهای توجه کنید؛ در روش اول، اگر دو نام متشابه با مقادیر متفاوت داشته باشید، مشکلی برایتان بوجود نخواهد آمد، اما در روش دوم، کامپایلر از شما خطا میگیرد. به مثال زیر دقت کنید:
کد غلط:
students.Add(“Jenny”, ۸۷);
students.Add(“Jenny”, ۳۵);
کد درست:
students[“Jenny”] = ۸۷;
students[“Jenny”] = ۳۵;
برای اینکه خودتان نیز در این پروژه کار با Hashtableها را امتحان کنید، کدهای زیر را قرار دهید:
Hashtable students = new Hashtable();
students[“Jenny”] = ۸۷;
students[“Peter”] = “No Score”;
students[“Mary Jane”] = ۶۴;
students[“Azhar”] = ۷۹;
foreach (DictionaryEntry child in students)
{
listBox1.Items.Add(“student: “ + child.Key + “ ,Score: “ + child.Value);
}
پیش از آنکه کدهای بالا را اجرا کنید، به عبارت زیر دقت کنید:
DictionaryEntry child
در سیشارپ، در هنگامی که از حلقه foreach برای Hashtableها استفاده میکنید، میبایست که از نوع داده DictionaryEntry استفاده کنید؛ به این دلیل است که این نوع داده میتواند همزمان هم Key را به ما برگرداند و هم Value را.
به عبارتهای child.Key و child.Value نیز دقت کنید؛ اینها همان Key/Valueهایی هستند که میتوانید بصورت مستقیم به آنها دسترسی پیدا کنید؛ که ما در اینجا برای نمایش نام دانشآموز و نمرهی او در ListBox، مجبور شدیم که از آنها استفاده کنیم.
نرمافزار خود را اجرا کنید؛ باید شاهد چنین نتیجهای باشید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
درضمن توجه داشته باشد که در Hashtableها نیز همانند لیستها میتوانید مقادیری را اضافه و حذف نمایید. برای حذف باید از Key استفاده کنید و بدین شکل حذف کنید:
students.Remove(“Peter”);
-
بخش چهل و پنجم
- آشنایی با و نحوهی استفاده از Enumeration
شما با استفاده از Enumerationها، می توانید مجموعه ای از اشیاء مورد نظرتان را پیاده سازی کنید. برای مثال، در نظر بگیرید که می خواهید که یک لیستی از عناوین دروسی که یک دانشجو می تواند آن ها را مطالعه کند را داشته باشید. شما در اینجا می توانید از Enumeration استفاده کنید.
پروژه ای را که جلسه ی پیش داشتیم را مجدداً اجرا نمایید؛ یک button جدید به فرم خود اضافه کرده و نام آن را به Enumeration تغییر دهید. بر روی button ای که هم اکنون آن را ساخته اید دابل کلیک کنید تا وارد بخش کد نویسی شوید.
با توجه به عکس زیر، سطری که با enum شروع می شود را بیرون از متد مربوط به button بنویسید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
شما ابتدا از کلمه ی کلیدی enum استفاده می کنید. بعد آن یک فاصله (space) ایجاد کرده اید؛ نام مربوط به لیست خود را وارد میکنید. در میان دو براکت، لیست مورد نظر را نوشته و برای ایجاده فاصله میان هر آیتم، از کاما استفاده میکنید. ما در لیست بالا، ۵ آیتم را اضافه کردهایم.
برای اینکه از لیست خود استفاده کنید، در داخل کد مربوط به Button جدید خود، خط زیر را وارد کنید:
Subjects newSubject = Subjects.Science;
در واقع شما نام را وارد کرده، و یک شی جدید از آن در ادامه با نام دلخواه میسازید. پس از درج مساوی و نوشتن مجدد اسم لیست خود، با توجه به عکس پایین، لیستی که از قبل اضافه کردهاید برای شما نمایان میشود که میتوانید از میان آن، موردی را انتخاب کنید. در ضمن، دقت کنید که آیتمها به ترتیب از شماره صفر شمارهگذاری میشوند و تا انتها پیش میروند.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای آن که لیست را در یک Message Box نمایش دهید، میتوانید از دستور زیر استفاده کنید:
MessageBox.Show( newSubject.ToString() );
با باید توسط متد ToString() آن را تبدیل کنیم؛ چرا که مقادیر در اصل بصورت متن نیستند!
-
بخش چهل و ششم
عملیات و دستکاریها بر روی String در بخشهای آموزشیای که تا کنون همراه با ما بودهاید، با متغیرهای از نوع String بسیار زیاد کار کردهاید، اما همه امکانات این متغیرها، تنها چیزهایی که تا کنون فراگرفتید نیست؛ موارد بسیاری وجود دارد که حتی تا فرصت گفتن آنها رو هم نخواهیم داشت.
سیشارپ همراه با متدها و توابع مختص به خودش برای کار با متغیرهای از نوع String عرضه شده. برای آشنایی با بعضی از امکانات موجود، میتوانید هم اکنون پروژهی جدیدی را از نوع Windows Application ایجاد کرده، یک Button و یک Textbox به فرم خود اضافه کنید.
برای Textbox، مشخصهی Text آن را به “some text” تغییر دهید. دقت کنید که دقیقاً عین عبارت نوشته شده را در Textbox بنویسید (از حروف بزرگ انگلیسی استفاده نشود.)
اکنون بر روی Button خود دابل-کلیک کرده تا وارد بخش کدنویسی مربوط به آن شوید. سپس خط کد زیر را در آن وارد کنید:
string stringVar = textbox1.Text;
در خط بعدی، کد زیر را بنویسید:
textbox1.Text = stringVar.
هنگامی که این نقطهی موجود در آخر را قرار میدهید، منوی IntelliSense برای شما ظاهر میشود که دارای متدهای بسیار بسیار زیادی میباشد:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
یک لیست بلندتری از امکانات موجود را نیز میتوانید در تصویر زیر ببینید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بعضی از متدهای موجود ممکن است که اصلاً از آنها استفاده نخواهید کرد، بعضی دیگر نیز ممکن است استفادهی روزانه شما باشد.
برای زمان فعلی، گزینه ToUpper را انتخاب کنید. چون این یک متد است، باید یک جفت پرانتز باز و بسته در مقابل آن قرار دهید. (دقت کنید که در سیشارپ، متدها با رنگ بنفش نشانداده میشوند.) همانطور که در تصویر زیر میبینید، دو تعریف برای این تابع موجود می باشد. می توانید با استفاده از کلیدهای جهت ( بالا و پایین ) ، به دو تعریف ان دسترسی داشته باشید.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
برای استفاده فعلی ما، تنها یک جفت پرانتز باز و بسته ی خالی قرار خواهید داد. به صورت زیر:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
هماکنون برنامه خود را اجرا کنید؛ بر روی Button کلیک کرده و ببینید که چه اتفاقی میافتد. می بینید که تمامی حروف کوچک به حروف بزرگ تبدیل شده اند.
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
متد دیگری با نام ToLower وجود دارد که عکس متد قبلی عمل می کند؛ در واقع حروف بزرگ را به کوچک تبدیل می کند.
در بخش های بعدی، با قابلیت های دیگر آشنا خواهید شد.
-
بخش چهل و هفتم
انجام عملیات هنگامی که بخش قبلی برای شما منتشر شد، دیدید که در توابع و متدهای فراوانی برای انجام عملیات مختلف بر روی String وجود دارند. اگر نگاه دیگری به آن بیندازید، میبینید که سه متد متشابه در رابطه با Trim کردن وجود دارند؛ Trim، TrimEnd و TrimStart. توسط این متدها، میتوانید کارکترها را Trim کنید. اما Trim چیست؟
Trim بدین معنیست که کارکترهای اضافی و بیخود اطراف یک متن را از بین میبرد. فرض کنید که در یک فرم از کاربر خود میخواهید که نام خود را وارد کند. اگر این کاربر نام خود را همراه با اضافه کردن فواصل بیخود وارد کند (یعنی قبل از اسم یا بعد از اسمش به تعداد زیادی space وارد کند) نتیجه چه می شود؟ خواهید دید که همه ی آن فواصل اضافه، همراه با اسم کاربر وارد پایگاه داده های شما شده و عملاً جستجوی رکوردها را برای شما سخت تر خواهد کرد.
توسط متد Trim شما می توانید که این فواصل اضافی را حذف کنید و سپس آن ها را در پایگاه داده های خود ذخیره کنید. اما هر یک از آن سه تابع چه کاری می کند؟
Trim: توسط این متد هرگونه فاصله ی اضافی را در هر کجای متن شما را پاکسازی میکند.
TrimEnd: این متد، فواصل اضافی را در انتهای متن حذف می کند.
TrimStart: این متد، فواصل اضافی را در ابتدای متن حذف می کند.
به پروژه ی قبلی خود مراجعه کنید و یک Button جدید به فرم خود اضافه کنید. می توانید که property مربوط به Text هر یک از Button ها را تغییر دهید. برای button اول Text را “Uppercase” وارد کنید. برای button جدید، text را “Trim” وارد کنید.
یک Text box دیگری را اضافه کنید و Text مربوط به آن را به شکل زیر همراه با رعایت فواصل وارد کنید:
“ Trimming “
فرم خود را به شکل زیر درآورید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بر روی button جدید خود دابل-کلیک کنید تا وارد بخش کد نویسی آن شوید. ما می توانیم که تعداد کارکترهای موجود در یک string را توسط stringLength محاسبه کنیم. کد زیر را وارد کنید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خط اول متن موجود در text box را دریافت کرده و در متغیری به نام stringTrim ذخیره می کند. به خط دوم دقت کنید؛ در این خط متغیری از نوع int تعریف شده و سپس تعداد کارکترهای موجود در متغیر stringTrim را در خود ذخیره می کند و در خط سوم، توسط یک Message box، تعداد کارکترهای موجود به نمایش گذاشته می شود.
اگر برنامهی خود را اجرا کنید، خواهید دید که جواب آن ۱۴ می باشد؛ یعنی علاوه بر ۸ کارکتر که مربوط به خود کلمه Trimming می باشد، ۶ کارکتر مربوط به فواصل موجود در ابتدا و انتهای کلمه است.
به کد خود بازگشته و کد خود را مطابق شکل زیر تغییر دهید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگر می خواهید که توسط متد Trim، فواصل اضافی موجود را حذف کنید، در بین پرانتزهای موجود برای متد trim، چیزی قرار ندهید. در واقع، این متد را بدون آرگومان صدا بزنید و از آن استفاده کنید.
اما اگر می خواهید که یک کارکتر خاصی (در اینجا برای مثال خط فاصله استفاده شده) را از بین ببرید، شبیه کد زیر عمل کنید؛ آن را در یک آرایه ذخیره کرده و به متد Trim پاس دهید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
-
بخش چهل و هشتم
متد Contains شاید بعضی وقت ها برای شما اتفاق بیوفتد که بخواهید برنامهی خودتان را به نحوی طراحی کنید که در یک String، بررسی کند که آیا کارکترهای خاصی در آن وجود دارد یا خیر؛ برای اینکه این کار را انجام دهید، می توانید که از متد Contains استفاده کنید. استفاده از این متد بسیار بسیار ساده می باشد!
برای نمونه، به عکس زیر دقت کنید:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بعد از آن که از متد Contains استفاده کردید، در مقابل آن یک جفت پرانتز باز و بسته قرار داده، در بین آن ها، کارکترهایی که می خواهید وجود یا عدم وجود آن ها را بررسی کنید را می نویسید. ما در این مثال، از وجود کارکتر «خط فاصله» مطمئن می شویم.
متد Contains به نحوی کار می کند که اگر کارکتر مورد نظر شما در متنتان موجود باشد، مقدار True را بر می گرداند، در غیر این صورت، مقدار False را بر می گرداند.
-
بخش چهل و نهم
متد IndexOf متد IndexOf می تواند زمانی مورد استفاده شما قرار گیرد که بخواهیم بررسی کنیم که آیا کارکتری در بین کارکتر دیگری وجود دارد یا نه. برای مثال، در نظر بگیرید که شما بخواهید یک ایمیلی که توسط فردی وارد شده است را بررسی کنید که آیا حاوی کارکتر @ هست یا نه؛ اگر وجود نداشت، شما می توانید برای کاربر پیامی صادر کنید تا ادرس ایمیل خود را به دلیل اشتباه بودن آن ، تصحیح کند.
به فرمی که در پیش داشته ایم، یک button و یک text box جدید اضافه کنید. مشخصه ی text مربوط به Text box را یک ایمیل وارد کنید. بر روی button خود دابل کلیک کنید تا وارد بخش کدنویسی آن شوید. کد ها را مطابق با تصویر زیر وارد نمایید :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اولین موردی که می بایست درباره آن توضیحاتی دهم، این است که IndexOf چگونه کار می کند. به این خط از کد دقت کنید:
int result = stringEmail.IndexOf(“@”);
متد IndexOf، مقداری از نوع int بر میگرداند. این شماره، محل قرارگیری کارکتر مورد نظر شما در کلمه ی وارد شده می باشد. در کد بالا، ما می خواهیم که کلمه ای را بررسی کنیم که در متغیری با نام stringEmail ذخیره شده است. ما در واقع می خواهیم بررسی کنیم و ببینیم که آیا متن ما حاوی @ می باشد یا نه! این مقدار در بین پرانتزهای مربوط به متد IndexOf قرار می گیرد. اگر که C# (سیشارپ) کارکتر مورد نظر را پیدا کند، محل قرارگیری آن را به شما خواهد گفت. این شما در نهایت در متغیری از نوع Int ذخیره شده که ما آن را با نام result ایجاده کرده ایم. اگر که کارکتری که شما به دنبال آن بودید در متن مورد نظر شما وجود نداشته باشد، متد IndexOf مقدار -۱ (منفی یک) را بر می گرداند.
کد شرطی ما (if) که در کدهای بالا می بینید، در حال بررسی مقدار result است. اگر که مقدار -۱ باشد، متوجه می شویم که کارکتر مورد نظر شما وجود ندارد، در غیراینصورت، کارکتر مورد نظر در محلی که در result ذخیره می شود، موجود است.
از برنامه ای که تهیه کرده اید یک اجرا بگیرید؛ بر روی Button جدیدی که ایجاد کرده اید کلیک کنید. نتیجه باید مشابه نتیجه پایین شده باشد:
اگر ایمیل وارد شده دارای کاکتر @ باشد:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]