สตริงใช้สำหรับเก็บตัวอักษร ตัวเลข ทำให้เข้าใจได้ง่ายมากขึ้นเพราะปกติคอมพิวเตอร์จะทำงานด้วยตัวเลข แต่มนุษย์สื่อสารด้วยตัวหนังสือ สตริงจะมีเครื่องหมายเปิด ปิดคือ “ และ ” เช่น “Hello World” สตริงจะทำการเรียงตัวอักษรต่อกันในหน่วยความจำ อย่างเช่น “Hello World” จะถือว่ามีสตริงอยู่ 11 ตัว โดยดัชนี(index)เริ่มต้นที่ 0
เมท็อดในสตริง
นอกเหนือจากเมท็อดที่สตริงมีให้ยังมีเรื่องเครื่องหมาย + ที่ได้เขียนกันมาแล้ว เครื่องหมาย + ในจาวานอกจากจะหมายถึง บวก ในตัวดำเนินการ ยังหมายถึงการต่อสตริงด้วย เช่น System.out.println(“สวัสดีคุณ ”+name) หมายถึงเอาสตริงของตัวแปร name ไปต่อกับสตริงที่อยู่ใน ( )
นอกจากนี้ในสตริงยังมีเมท็อดสำหรับการใช้งานซึ่งเมท็อดที่สำคัญๆและใช้งานบ่อยๆมีดังนี้
String s;
s.length( ) คือขนาดของสตริง จำนวนตัวอักษรทั้งหมด เช่น Hello มี length 5 ตัวอักษร
s.trim( ) ใช้สำหรับตัดช่องว่างด้านหน้าและด้านหลังสตริง คือเวลาที่ทำกล่องให้กรอกข้อมูลบางครั้งผู้กรอกข้อมูลอาจใส่ช่องว่างโดยที่ไม่ได้ตั้งใจ การตัดช่องว่างออกจะทำให้การประมวลผลเข้าใจได้ง่าย เช่น เวลานับตัวอักษรบนสตริงก็จะไม่งง
s.substring( i, j ) เอาสับสตริงตัวที่ i ถึง j-1 ออกมาจากสตริง เช่น Hello substring(2, 5) จะได้สับสตริง ell คือ e เป็นตัวที่ 2 ส่วน l เป็นตัวที่ 3 และ l อีกตัวเป็นตัวที่ j-1 คือ 5-1 = 4 ของสตริง
s.indexOf( t, i ) หาตัวอีกษรหรือข้อความ t โดยเริ่มหาจากตัวที่ i ใช้ในกรณีที่ต้องการหาคำบางคำและอาจจะตัดคำๆนั้นด้วย substring เอาไปใช้งานต่อ
s.equals( t ) ถ้า s เหมือนกับ t ทุกประการให้คืนค่าจริง
s.equalsIgnoreCase( t ) ถ้า s เหมือนกับ t ทุกประการให้คืนค่าจริงโดยไม่สนว่าจะตัวใหญ่เล็กไม่เหมือนกัน ถ้าข้างบนคือตัว T t ถือว่าเป็นคนละตัวเลย
s.toUpperCase( ) เปลี่ยนทุกตัวในสตริงให้เป็นตัวอักษรใหญ่(capital letter)
s.toLowerCase( ) เปลี่ยนทุกตัวในสตริงให้เป็นตัวอักษรเล็ก(small letter)
ข้อมูลประเภท char
char จะเป็นการเก็บข้อมูลแค่ 1 ตัวอักษร โดยจะเขียนเครื่องหมาย ‘ และ ’ เพื่อเปิดปิดตัวอักษรนั้น เช่น char c = ‘a’; เนื่องจากในจาวา char จะถูกมองเป็นตัวเลขเหมือน 1 2 จึงสามารถใช้เครื่องหมาย == >= <= != ในการตรวจสอบ char ได้ รวมถึง operation ต่างๆ เช่น + - * / % ได้ด้วย อย่าง ‘ก’+1 จะได้ ข
เมท็อดที่เกี่ยวข้องกับ char ได้แก่ s.charAt(i) คืนค่า char ตำแหน่งที่ i ของสตริง s
การใช้
รูป 8-1
โปรแกรมนี้ต้องการตรวจสอบว่าถ้ามีสตริง 2 สตริง จะมีสตริง2 เป็นสับสตริงของสตริงแรกหรือไม่
บรรทัดที่ 8 : ประกาศตัวแปรสตริง s1 และ s2 จากนั้นให้รับข้อมูลจากแป้นพิมพ์มาใส่สตริง
บรรทัดที่ 11,13: รับข้อมูลจากแป้นพิมพ์มาใส่สตริง โดยใช้ nextLine()
บรรทัดที่ 15 : ใช้เงื่อนไขตรวจสอบ ถ้าตรวจข้อความในสตริง s2 เทียบกับ s1 แล้วคืนค่า -1 ก็คือไม่
มี s2 อยู่ใน s1 ให้แสดงผลทางหน้าจอว่าไม่มี
บรรทัดที่ 20 : วนลูปโดยให้ตัวแปร i มีค่ามากกว่า 0 แต่ไม่เกินขนาดของสตริงs1 ให้วนลูป
ตรวจสอบคำสั่งในลูป
บรรทัดที่ 22 : ให้หาว่ามี s2 อยู่ใน s1 หรือไม่ โดยตรวจสอบจากดัชนีที่เริ่มและสิ้นสุดตามการวน
ลูปของตัวแปร i
บรรทัดที่ 23 : ตรวจสอบเพื่อความมั่นใจว่าถ้ามีค่าเป็น -1 ให้ break หรือหยุดทำงานเลย
บรรทัดที่ 24 : แต่ถ้าเจอให้แสดงผลออกทางหน้าจอว่าเจอ s2 ทีดัชนีที่เท่าไหร่ของ s1
ผลลัพธ์
ใส่คำว่า Study Java ลงไป และให้หาคำว่า Jav ซึ่งพบที่ดัชนีที่ 6 (ช่องก็นับด้วย)
รูป 8-2
พาลินโดรม
พาลินโดรมคือคำ ตัวเลข สัญลักษณ์ที่มีสมมาตร เช่น dad Anna 123454321หรือประโยคก็ได้ เช่น Eva, can I stab bats in a cave? ภาษาไทยก็เช่น ทายาท หรือประโยค ดีใจคุณแม่คุณใจดี
โปรแกรมต่อไปนี้จะตรวจสอบว่าสตริงที่รับเข้ามาเป็นพาลินโดรมหรือไม่
รูป 8-3
บรรทัดที่ 9-12 : ประกาศตัวแปรสตริงและรับข้อมูลจากแป้นพิมพ์เข้ามาใส่สตริง
บรรทัดที่ 14-15 : ให้ x เก็บความยาวของสตริงและ y เก็บดัชนีตัวหลังสุดของครึ่งซ้ายของสตริง(เวลาดูพาลินโด
รมก็ตรวจดูที่ละครึ่งว่าครึ่งหน้าเหมือนครึ่งหลังไหม)
บรรทัดที่ 16 : ประกาศตัวแปร isPalindrome ให้มีค่าเป็นจริง
บรรทัดที่ 19 : ตรวจว่าเท่ากันไหมระหว่างครึ่งแรกเท่ากับครึ่งหลังคือตัวที่ความยาวทั้งหมดลบ1 โดยใช้ == ได้
เพราะ char จะเก็บข้อมูลแบบหนึ่งตัวอักษร (ถ้าเทียบสตริงต้องใช้ .equals)
บรรทัดที่ 22 : ถ้าไม่ใช่พาลินโดรมให้ออกจากลูป
บรรทัดที่ 28 : ประกาศตัวแปร result เก็บค่าจากการตรวจสอบโดยใช้ if ถ้าจริงให้แสดงว่าเป็น ถ้าไม่ให้แสดง
ว่าไม่เป็น
ผลลัพธ์
รูป 8-4
Tag ที่น่าสนใจ: java string methods charat length trim substring indexof equals equalsignorecase touppercase tolowercase palindrome programming character
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com