8. สตริง(String)

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

8. สตริง(String)

            สตริงใช้สำหรับเก็บตัวอักษร ตัวเลข ทำให้เข้าใจได้ง่ายมากขึ้นเพราะปกติคอมพิวเตอร์จะทำงานด้วยตัวเลข แต่มนุษย์สื่อสารด้วยตัวหนังสือ สตริงจะมีเครื่องหมายเปิด ปิดคือ “ และ ” เช่น “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

 

แผนผังการเรียนเขียนโปรแกรม

 

___________________

รับสอนเขียนJAVA , C# , VB.net

โทร 0853507540

___________________

 

ใส่ความเห็น