آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش متد Substring

یک متد واقعا مفید برای شما متود substring نامیده می شود. این متود به شما اجازه می دهد تا یک متن را از متن دیگر جدا سازید. برای مثال در برنامه ی فوق در آدرس ایمیل خود می توانیم پنج کاراکتر آخر را از کل آدرس جدا کرده و بررسی کنیم که آیا co.uk است یا نه.

برای تمرین با substring می خواهیم دو حرف اول از نام خانوادگی را تغییر دهیم و آنها را با دو حرف اول یک نام شخصی جابه جا سازیم و بالعکس. بنابراین اگر این نام را داشته باشیم:

"Bill Gates"

حروف "Ga" از "Gates" را با "Bi" از "Bill" جابه جا سازیم تا لغت "Bites" را بسازیم. بنابراین "Bi" از "Bill" با "Ga" از "Gates" جابه جا خواهد شد تا لغت "Gall" را بسازد. نام جدید چاپ شده "Gall Bites" خواهد بود.

ما از substring در قسمت بیشتر این برنامه استفاده خواهیم کرد. Substring به این صورت کار می کند:

String FullName = "Bill Gates";
String FirstNameChars = "";

FirstNameChars = FullName.substring( 0, 2 );

در مورد "Bill Gates" برای جستجو یک رشته تنظیم می کنید. رشته ای که سعی در جستجوی آن دارید، بعد از یک علامت تساوی قرار می گیرد. بعد از یک نقطه (dot)، نام متود، substring، را تایپ کنید. دو روش برای استفاده از substring وجود دارد و تفاوت در اعداد بین پرانتزها می باشد. در کد فوق دو عدد 0 و 2 را داریم. این به این معناست که گرفتن کاراکترها در موقعیت 0 در رشته آغاز می شود و وقتی دو عدد دارید، این فرایند متوقف می شود. این دو کاراکتر بازگردانده می شوند و در متغیر FirstNameChars قرار می گیرند. اگر می خواهید درست در انتهای رشته قرار بگیرید، کافیست کار زیر را انجام دهید:

String test = FullName.substring( 2 );

این بار بین پرانتزهای substring تنها یک عدد داریم. اکنون جاوا از کاراکتر دو در رشته ی FirstName آغاز خواهد کرد و سپس کاراکترها را از موقعیت 2 درست در انتهای رشته می گیرد.

یک برنامه ی جدید آغاز کنید تا این برنامه را امتحان کنید. یک خط چاپ به انتهای کد خود اضافه کرده و کد شما نیز باید مانند زیر باشد:

آموزش جاوا

وقتی که برنامه اجرا می شود، پنجره ی Output باید شبیه به تصویر زیر باشد:

آموزش جاوا

بنابراین متود substring به ما اجازه ی گرفتن دو کاراکتر اول نام "Bill" را داده است.

برای گرفتن دو کاراکتر اول، یک 0 و یک 2 بین پرانتزهای substring داشتیم. ممکن است تصور کنید برای گرفتن "Ga" از "Gates" می توانستیم این کار را انجام دهیم:

= FullName.substring(5, 2);

بعد از همه ی اینها هنوز دو کاراکتر می خواهیم. فقط این بار 5 به جاوا می گوید که از "G" در "Gates" آغاز کنید. ( اولین موقعیت در یک رشته موقعیت 0 می باشد و نه 1). بنابراین از موقعیت 5 در این رشته آغاز کرده و دو کاراکتر را بگیرید.

به هرحال اجرای آن کد منجر به بروز خطا خواهد شد. این به این حاطر است که دومین عدد بین پرانتزهای substring به معنای تعداد کاراکترهایی که می خواهید بگیرید نیست، بلکه به معنای موقعیت نهایی در رشته می باشد. با مشخص کردن 2، به جاوا می گوییم که در کاراکتری در موقعیت 2 از رشته به اتمام برسد. از آنجایی که نمی توانید از موقعیت 6 به عقب بازگشته و به موقعیه 2 بروید، خطایی دریافت می کنید.

( نکته: اگر شمارش را در رشته ی "Bill" از 0 شروع کنید، ممکن است تصور کنید که موقعیت 2 حرف "l" می باشد و حدس شما درست است. اما substring قبل از کاراکتر در آن موقعیت آغاز می کند و پس از آن.)

بنابراین برای گرفتن "Ga" از "Gates" می توانید مانند زیر عمل کنید:

FullName.substring( 5, FullName.length( ) - 3 );

اکنون دومین عدد طول رشته منهای 3 کاراکتر می باشد. طول رشته تعداد کاراکترهایی است که آن رشته دارد. "Bill Gates" دارای 10 کاراکتر شامل فاصله، می باشد. اگر سه کاراکتر را کنار بگذارید، 7 کاراکتر خواهید داشت. بنابراین ما به substring می گوییم که در کارامتر 5 شروع شده و در کاراکتر 7 به پایان برسد.

این برنامه برای افرادی با نام "Bill Gates" به درستی کار می کند. اما اگر نام شما "Billy Gates" می بود، این برنامه به درستی کار نمی کرد. بنابراین کد فوق کاراکتر فاصله به علاوه ی حرف "G" را می گیرد که به هیچ وجه کاراکترهای مورد نظر ما نیستند. ما می خواهیم که برنامه با هر دو نامی که وارد می شوند، کار کند. بنابراین باید کمی زیرک تر باشیم.

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

برای اشاره به موقعیت فاصله می توانیم از indexOf استفاده کنیم.

int spacePos = FullName.indexOf(" ");

برای تعیین کاراکتر فاصله، می توانید یک فاصله بین دو نماد نقل قول (") قرار دهید. این کاراکتر پس از پرانتزهای indexOf قرار می گیرد. مقدار بازگشت داده شده یک عدد صحیح خواهد بود که موقعیت اولین رویداد از کاراکتر فاصله در رشته ی FullName می باشد.

این تمرین را می توانید با اضافه کردن خط فوق به کد خود امتحان کنید: برای چک کردن Output یک خط چاپی اضافه کنید:

آموزش جاوا

برنامه را اجرا کنید تا خروجی زیر را مشاهده کنید:

آموزش جاوا

بنابراین در این رشته فاصله در موقعیت 4 می باشد. ما می توانیم از این واقعیت برای گرفتن دو کاراکتر اول از "Gates" یا در واقع هر نام دوم دیگری استفاده کنیم. به جاوا می گوییم که از اولین کاراکتر بعد از فاصله آغاز و در دو کاراکتر بعدی به اتمام برساند.

FullName.substring( spacePos + 1, (spacePos + 1) + 2)

بنابراین دو عدد بین پرانتزهای substring عبارتند از:

spacePos + 1, (spacePos + 1) + 2

ما می خواهیم که از اولین کاراکتر بعد از فاصله آغاز کنیم (space + 1) و دو کاراکتر بعد از این موقعیت به اتمام برسانیم که به این شکل می باشد: (spacePos + 1) + 2

خطوط زیر را به کد خود اضافه کنید (خطوطی که هایلایت شده اند. متود جدید substring در دو خط قرار می گیرد، اما شما اگر تمایل داشته باشید می توانید روی یک خط قرار دهید.):

آموزش جاوا

وقتی که برنامه را اجرا می کنید، پنجره ی Output مانند زیر خواهید بود:

آموزش جاوا

بنابراین اکنون ما "Bi" از Bill و "Ga" از Gates را داریم. آنچه اکنون باید انجام دهیم گرفتن بقیه ی کاراکترها از دو نام و سپس جابه جایی آنها می باشد.

مجددا می توانیم از substring برای گرفتن بقیه ی کاراکترها از نام اول استفاده کنیم:

String OtherFirstChars = "";
OtherFirstChars = FullName.substring( 2, spacePos );
System.out.println( OtherFirstChars );

و همچنین کاراکترهای باقیمانده از نام دوم:

String OtherSurNameChars = "";
OtherSurNameChars = FullName.substring((spacePos + 1) + 2,
FullName.length() );

System.out.println( OtherSurNameChars );

به اعداد بین پرانتزهای substring دقت کنید. برای گرفتن دیگر کاراکترهای نام اول، اعداد عبارتند از:

2, spacePos

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

(spacePos + 1) + 2, FullName.length( )

(spacePos1 + 1) + 2 موقعیت شروع سومین کاراکتر از دومین نام می باشد. ما می خواهیم که در طول رشته به پایان برسانیم که بقیه ی کاراکترها را دریافت خواهیم کرد.

خطوط های لایت شده ی زیر را به کد خود اضافه کنید:

آموزش جاوا

خروجی مانند زیر خواهید بود:

آموزش جاوا

اکنون تمام قسمت های نام را داریم. برای اتصال آنها به یکدیگر، می توانیم از الحاق (concatenation) استفاده کنیم:

آموزش جاوا آموزش جاوا

می توانیم از خطوط چاپی رها شویم و از یک یوزر بخواهیم که نام اول و نام دوم را وارد کند. در اینجا برنامه ی جدید را مشاهده می کنید ( تنها افزایش برای ورودی صفحه کلید می باشد که قبلا از آن استفاده کرده اید):

آموزش جاوا

وقتی برنامه را اجرا می کنید و نام و نام خانوادگی را وارد می کنید، پنجره ی Output باید مانند تصویر زیر باشد:

آموزش جاوا

البته باید چند برنامه ی بررسی خطا نیز اضافه کنیم. اما خواهیم پذیرفت که یوزر می تواند یک نام و یک نام خانوادگی با یک فاصله بین آنها وارد کند. در غیر اینصورت برنامه با شکست مواجه می شود. به هرحال اجازه بدهید ادامه داده و نگاهی به متود equals داشته باشیم.

  • 11442
  •    1658
  • تاریخ ارسال :   1394/07/27

دانلود PDF دانلود سورس کد دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .