تجزيه کردن مقاير رشته ای

این درس به بررسی روشهای Parsing مقادیر رشتهای در زبان جاوا میپردازد و نحوه تبدیل رشتهها به انواع دادهای مانند int، double و boolean با استفاده از متدهای استانداردی همچون Integer.parseInt، Double.parseDouble و Boolean.parseBoolean را بهطور تخصصی آموزش میدهد. همچنین نکات مهمی همچون اعتبارسنجی ورودی، استفاده از try-catch برای مدیریت استثناها و بهینهسازی رشتهها با متد trim() مورد بررسی قرار میگیرند تا توسعهدهندگان بتوانند دادههای متنی را به شیوهای امن و کارآمد در برنامههای خود به کار گیرند.
کلاس String جاوا شامل متدهای زیادی است که میتوانید برای تجزیه اطلاعات و یافتن زیر رشته ها از آنها استفاده کنید. من بعضی از این متدها رو اینجا در این پروژه ParsingStrings به شما نشان میدهم.
من از قبل یک رشته با مقدار Welcome to California ایجاد کردم.
اول از همه میخواهم طول این رشته رو در خروجی نمایش بدهم.
من از عبارت System output استفاده میکنم و با یک برچسب Length of string شروع میکنم و عبارتs1.length رو به آن اضافه میکنم.
Length یک متد از کلاس String هست. که طول رشته رو بهشون برمیگرداند. یعنی تعداد کاراکترهای یک رشته رو به ما نشان میدهد.
من از این کد اجرا میگیرم و نتیجه ای که به ما نشان میدهد عبارت Length of string: 22 هست. یعنی تعداد تمام کارکترهای ما به انضمام اسپیس ها و علامت تعجب 22 تا میشود.
خب؛ این رو بگویم که حالا میخواهم یک زیر رشته خاص از داخل این رشته رو پیدا کنم.
میتوانید اینکار رو با استفاده از یک متد به نام indexOf انجام بدهید.
این متد کارش این است که میآید یک زیررشته رو میگیرد و موقعیت ایندکس حرف اول اون زیر رشته رو در رشته اصلی به ما برمیگرداند.
این متد یک عدد صحیح به ما برمیگرداند، پس میآیم یک متغیر int به نام position به عنوان یک عدد صحیح ایجاد میکنم و مقدارش رو با صدا زدن s1.indexOf تنظیم میکنم.
و بعد زیر رشته ای که دنبالش هستم رو به آن میدهم.
مثلاً کالیفرنیا.
و این اطلاعات رو در خروجی کنسول نمایش میدهم که با برچسب Position of substring شروع میشود و بعد هم position رو به آن اضافه میکنم.
تا موقعیت عبارتی که در رشته دنبال آن بودم رو در خروجی به من نشان بدهد. که در اینجا موقعیت ایندکس حرف C مربوط به کلمه کالیفرنیا در کل رشته رو به ما برمیگرداند.
با استفاده از میانبرها یعنی Shift و F10 از کدم اجرا میگیرم و این هم نتیجه، عبارت Position of substring: 11 در خروجی نمایش داده شده.
خب؛ اگر بخاطر داشته باشید، همونطور که در آرایه ها داشتیم، شمارش عناصر آرایه از صفر شروع میشود. در واقع حرف C در کلمه California عبارتWelcome to California باید کاراکتر دوازدهم باشد؛ ولی عدد 11 برای ما نمایش داده شده، چونکه این عدد موقعیت ایندکس حرف C هست.
اگر کاراکترهای عبارت Welcome to California رو با احتساب کاراکترهای space بیاییم از ابتدا از صفر شماره گذاری کنیم، میبینیم که حرف c در این عبارت شماره 11 رو میگیرد و میشه با صدا زدن یک متد از کلاس String با نام substring این موضوع رو تأیید و اثبات کرد و با اینکار بهمون ثابت میشه که عددی که به عنوان موقعیت بهمون برگردانده درست هست.
پس میام یک String ایجاد میکنم. نامش رو sub میگذارم و عبارت s1.substring رو فراخوانی میکنم.
توجه داشته باشید، همانطور که در لیست پیشنهادی مشخص است، دو نسخه از این متد وجود دارد.
یکی از این نسخه ها فقط یک مقدار beginning index یا ایندکس اولیه میخواهد و نسخه بعدی علاوه بر یک مقدار beginning؛ یک مقدار ending index هم بعنوان ایندکس نهایی میخواهد.
من از نسخهای که فقط یک آرگومان ورودی میگیرد استفاده میکنم. یعنی beginning index.
و بعدش هم عدد 11 رو بعنوان ورودی و ایندکس شروع بهش میدهم و بعد زیررشته ای رو که پیدا میکنه در خروجی نمایش میدم و حالا هم از کدم ران می گیرم و همونطور که میبینیم کلمه California رو بهمون نشون میده. این نشون میده که حرف c دقیقاً ایندکساش 11 هست، چون وقتی که با استفاده از متد substring گفتم که بیا، از کاراکتر یازدهم به بعد رو چاپ کن، دقیقاً عبارت California رو چاپ کرد. یعنی از کاراکتر 11 ام به بعد که همون حرف c به بعد میشه رو چاپ کرد.
حالا بیایید یک آزمایش دیگر انجام بدهیم. میخواهم یک رشته داشته باشم که چند تا کاراکتر space در آخرش داشته باشد.
پس میام یک String دیگر با نام s2 ایجاد میکنم و مقدارش رو Welcome به اضافه یک علامت تعجب تعیین میکنم، ولی اینبار بعدش چندتایی کاراکتر space هم اضافه میکنم.
حالا میخواهم طول این رشته رو ریپورت کنم و بدست بیاورم.
پس میام یک متغیر integer ایجاد میکنم و نامش رو L-E-N-1 میگذارم و مقدارش رو با استفاده از عبارت s2.length تعیین میکنم و بعد این مقدار رو در خروجی کنسول نمایش میدم.
خب؛ اگر از کدم اجرا بگیرم؛ میبینیم که عدد 17 بهمون نشون داده میشه.
عدد 17 در واقع تعداد کل کاراکترهای رشته s2 هست، با احتساب همه کاراکترهای space ای که در آخرش اضافه کردم.
حالا یک String دیگه ایجاد میکنم و نامش رو s3 میگذارم و بعد میام برای مقداردهی آن یک متدی با نام trim رو از کلاس String برای S2 فراخوانی میکنم.
متد trim میاد فضاهای خالی ابتدا و انتها رشته ای رو که بهش میدهیم حذف میکنه. خب برای سرعت بخشیدن به کارم؛ حالا میام و یک کپی از این کد خروجی میگیرم و این پایین آنرا پاست میکنم و عبارتی که میخواهم در خروجی چاپ بشه رو به s3.length تغییر میدم.
و نهایتاً هم میام و مجدداً از کدم اجرا می گیرم.
و حالا بعد از عملیات حذف کاراکترهای خالی از ابتدا و انتها رشته، میبینیم که طول رشته مان فقط 8 کاراکتر هست.
چون وقتی که با استفاده از متد trim میآییم space ها رو از ابتدا و انتها این رشته حذف میکنیم؛ فقط میماند کاراکترهای عبارت Welcome با یک علامت تعجب که همگی میشوند 8 کاراکتر. در واقع با استفاده از متد trim میآییم کاراکترهای space رو از ابتدا و انتها رشته حذف میکنیم و میماند رشته Welcome! که طولش 8 هست.
میتوانید با خواندن اسناد و اطلاعات API جاوا در مورد قابلیت های دیگر کلاس String اطلاعات بیشتری کسب کنید. پیشنهاد میکنم به همه متدهای مختلفی که اعضا این کلاس هستند خوب دقت کنید و راجب شان تحقیق کنید. اگر بخواهید یک رشته رو تجزیه کنید، باید ابزارهای مورد نیاز اینکار رو در ایندکسی که در اینجا در مرورگر من میبینیدش، پیدا کنید.