Transcript Slide 1

สายอักขระ (String)


เป็ นชนิดขอมู
่ ระกอบดวยตั
วอักขระหลายๆ
้ ลทีป
้
ตัวมาเรียงตอกั
่ น
เป็ นการจองเพือ
่ เก็บคาของต
าแหน่งอางอิ
งทีใ่ ช้ใน
่
้
การเขาถึ
อมู
้ งคาของข
่
้ ล
ไมใช
่ เก็บคาของข
อมู
่ ่ จองเพือ
่
้ ล
2

ใช้เปรียบเทียบคาข
่ อมู
้ ลชนิด String 2 คา่
result = str1.equals(str2);
โดยที่
str1 เป็ นข้อมูลชนิด String ตัวที่ 1
str2 เป็ นข้อมูลชนิด String ตัวที่ 2
result
เป็ นตัวแปรขอมู
้ ลชนิด boolean
3

ใช้เปรียบเทียบคาข
่ อมู
้ ลชนิด String 2 คา่
เช่นกัน
n = str1.compareTo(str2);
โดยที่
str1 เป็ นข้อมูลชนิด String ตัวที่ 1
str2 เป็ นข้อมูลชนิด String ตัวที่ 2
n
เป็ นตัวแปรขอมู
ไ่ ดจาก
้ ลชนิด int เก็บคาผลที
่
้
การเปรียบเทียบขอมู
้ ล
4

ใช้สาหรับเชือ
่ มตอข
่ อมู
้ ลชนิด String หรือใช้
เครือ
่ งหมาย +
str3 = str1.concat(str2);
str3 = str1+ str2;
โดยที่
str1 เป็ นข้อมูลชนิด String ตัวที่ 1
str2 เป็ นข้อมูลชนิด String ตัวที่ 2
str3 เป็ นตัวแปรขอมู
้ ลชนิด String เก็บคาผลรวม
่
ของ str1 กับ str2
5

ใช้สาหรับเชือ
่ มตอข
่ อมู
้ ลชนิด String หรือใช้
เครือ
่ งหมาย +
str3 = str1.concat(str2);
str3 = str1+ str2;
โดยที่
str1 เป็ นข้อมูลชนิด String ตัวที่ 1
str2 เป็ นข้อมูลชนิด String ตัวที่ 2
str3 เป็ นตัวแปรขอมู
้ ลชนิด String เก็บคาผลรวม
่
ของ str1 กับ str2
6

ใช้สาหรับตัดขอมู
้ ลชนิด String ให้เป็ นขอความ
้
ยอย
่
str2 = str1.substring(x, y);
โดยที่
str1 เป็ นข้อมูลชนิด String ทีต
่ ้องการตัด
str2 เป็ นตัวแปรทีร่ บ
ั คาข
่ ้อความทีไ่ ดจากเมธอด
้
substring()
x
เป็ นตาแหน่งเริม
่ ตนที
่ องการตั
ดขอความ
้ ต
้
้
y
เป็ นตาแหน่งสิ้ นสุดของตัวอักขระทีต
่ ้องการ
7

ใช้สาหรับแทนทีส
่ ่ วนของขอความในข
อมู
้
้ ลชนิด
String
str2= str1.replace(str3, str4);
โดยที่
str1 เป็ นข้อมูลชนิด String ทีจ
่ ะถูกแทนทีข
่ ้อความ
บางส่วนดวย
้
ข้อความทีก
่ าหนด
str2 เป็ นตัวแปรทีร่ บ
ั คาข
่ ้อความทีไ่ ดจากเมธอด
้
replace()
str3 เป็ นข้อมูลชนิด String ทีจ
่ ะถูกแทนทีใ่ น
ข้อความเดิม
str4 เป็ นข้อมูลชนิด String ทีจ
่ ะเอาไปแทนทีใ่ น
8
ข้อความเดิม

เมธอด toUpperCase() ใช้เปลีย
่ นขอมู
้ ลให้เป็ น
ตัวอักษรพิมพใหญ
ทั
์
่ ง้ หมด
str2= str1.toUpperCase();
โดยที่
str1 เป็ นข้อมูลชนิด String ทีจ
่ ะต้องการ
เปลีย
่ นเป็ นตัวอักษรพิมพใหญ
่
์
str2 เป็ นตัวแปรทีร่ บ
ั คาข
่ ้อความทีไ่ ดจากเมธอด
้
toUpperCase()

่ นขอมู
เมธอด toLowerCase() ใช้เปลีย
้ ลให้เป็ น
ตัวอักษรพิมพเล็
์ กทัง้ หมด
9
str2= str1.toLowerCase();
10

ใช้นับจานวนตัวอักขระของขอมู
้ ลชนิด String
str2= str1.replace(str3, str4);
โดยที่
str
อักขระ
n
อักขระ
เป็ นข้อมูลชนิด String ทีต
่ ้องการนับจานวนตัว
เป็ นตัวแปรขอมู
ั คาจ
้ ลชนิด int ทีร่ บ
่ านวนตัว
11

ใช้ค้นหาและแสดงคาตั
่ วอักขระในขอมู
้ ลชนิด
String ณ ตาแหน่งทีต
่ องการ
้
ch = str.charAt(index);
โดยที่
str เป็ นข้อมูลชนิด String ทีต
่ ้องการคนหาและ
้
แสดงคาตั
่ วอักขระ
index เป็ นตาแหน่งของขอความที
ว
ต
่ ้องการคนหาตั
้
้
อักขระ
ch
เป็ นตัวแปรขอมู
ั คาตั
้ ลชนิด char ทีร่ บ
่ วอักขระ
จากเมธอด charAt()
12

ใช้ค้นหาและแสดงคาต
่ าแหน่งของตัวอักขระใน
ข้อมูลชนิด String
index = str.indexOf(ch);
โดยที่
str เป็ นขอมู
่ ้องการค้นหาและ
้ ลชนิด String ทีต
แสดงคาต
่ าแหน่งของตัวอักขระ
ch
เป็ นตัวตัวอักขระทีต
่ ้องการคนหา
้
index เป็ นตาแหน่งของตัวอักขระทีค
่ ้นหาพบใน str
ในกรณีทไี่ มพบตั
วอักขระ ch เมธอดจะให้คา่
่
เป็ นจานวนเต็มลบ
13

เมธอด startsWith() ใช้ตรวจสอบขอความส
้
่ วน
หัวของขอมู
้ ลชนิด String
result = str1. startsWith(str2);

เมธอด endsWith() ใช้ตรวจสอบขอความ
้
อมู
ส่วนทายของข
้ ล
้
result = str1. endsWith(str2);
โดยที่
str1 เป็ นข้อมูลชนิด String ทีต
่ ้องการตรวจสอบ
str2 เป็ นข้อมูลชนิด String ทีใ่ ช้ตรวจสอบ
result
เป็ นตัวแปรขอมู
บ
้ ลชนิด boolean สาหรั
14
15

ใช้ค้นหาและแสดงคาต
พ
่ บตัว
่ าแหน่งสุดทายที
้
อักขระในขอมู
้ ลชนิด String
index = str.lastindexOf(ch);
โดยที่
str
เป็ นข้อมูลชนิด String ทีต
่ ้องการคนหา
้
ch
เป็ นอักขระทีใ่ ช้ในการค้นหา
index เป็ นตาแหน่งของตัวอักขระ ch ทีค
่ ้นหาพบใน
str
ในกรณีทไี่ มพบตั
วอักขระ ch เมธอดจะให้คา่
่
เป็ นจานวนเต็มลบ
16
void showdata() {
if (code.size() > 0) {
System.out.printf("%-8s%-6s%-5s%-20s\n","date","id","
for (int i=0; i<code.size(); i++) {
import java.util.Scanner;
date = getinfo(code.get(i).toString(),0,8);
import java.util.ArrayList;
id = getinfo(code.get(i).toString(),8,12);
class product_detail { size = getinfo(code.get(i).toString(),12,13);
= getinfo(code.get(i).toString(),13,
code.get(i).to
String pcode, date, id,name
size, name;
int n;
System.out.printf("%-8s%-6s%-5s%-10s\n",date,id,siz
ArrayList code = new ArrayList();
} //for
void inputdata() {
} //if
Scanner scan = new
Scanner(System.in);
} //showdata
System.out.println("Enter
product code code,
=> int a, int b) {
String getinfo(String
ddmmyyyy0000MBreeze
(Press
x to Exit)");
String :info
= code.substring(a,b);
do {
return info;
System.out.print("product
code : ");
} //getinfo
} //class
pcode = scan.nextLine();
public class
if (!(pcode.equals("x")))
{ ProductCode {
public static void main(String[] args) {
code.add(pcode);
product_detail product = new product_detail();
}
product.inputdata();
} while (!(pcode.equals("x")));
product.showdata();
}
}
}
17

คลาส StringBuffer มีลก
ั ษณะการใช้งานเหมือนคลาส
String
แตมี
ิ างอยางที
แ
่ ตกตางจากคลาส
String คือ
่ คุณสมบัตบ
่
่


String ไมสามารถเปลี
ย
่ นแปลงคาที
่ ยูภายในได
หลั
่ ก
ู
่
่ อ
่
้ งจากทีถ
สร้างขึน
้ มาแลว
้
ในขณะที่ StringBuffer ออกแบบมาให้สามารถแกไข
้
เปลีย
่ นแปลงคาได
่
้
การใช้เมธอดเปลีย
่ นแปลงคา่ String จะเป็ นการสราง
String
้
ตัวใหม่
ทาให้ประสิ ทธิภาพการทางานของโปรแกรมลดลงได้
ในขณะที่ StringBuffer มีเมธอดเปลีย
่ นแปลงคาในตั
วเอง
่
โดยไมต
างขึ
น
้ ใหม่
่ องสร
้
้
การทางานจึงมีประสิ ทธิภาพมากกวา่
18

คลาส StringBuffer มีลก
ั ษณะการใช้งานเหมือนคลาส
String
แตมี
ิ แ
ี่ ตกตางจากคลาส
String คือ
่ คุณสมบัตท
่




String ไมสามารถเปลี
ย
่ นแปลงคา่ ในขณะที่ StringBuffer
่
สามารถแกไขเปลี
ย
่ นแปลงคาได
้
่
้
การใช้เมธอดเปลีย
่ นแปลงคา่ String จะเป็ นการสราง
String
้
ตัวใหม่
ทาให้ประสิ ทธิภาพการทางานของโปรแกรมลดลงได้
ในขณะที่ StringBuffer มีเมธอดทีส
่ ามารถเปลีย
่ นแปลงคาใน
่
ตัวเอง
โดยไมต
างขึ
น
้ ใหม่ การทางานจึงมีประสิ ทธิภาพมากกวา่
่ องสร
้
้
อความ
าของข
ในกรณีทม
ี่ ก
ี ารเปลีย
่ นแปลงหรือแกไขค
้
่
้
ควรใช้ StringBuffer แทน
คลาส StringBuilder มีลก
ั ษณะการใช้งานเมธอด
19


เมธอด append() ใช้สาหรับเพิม
่ ขอความแบบต
อท
้
่ าย
้
ข้อมูลเดิม
str3 = str1.append(str2);
โดยที่
str1 เป็ นข้อมูลชนิด StringBuffer ทีต
่ ้องการเพิม
่
ข้อความตอท
่ าย
้
str2 เป็ นข้อมูลชนิด StringBuffer ทีต
่ ้องการ
นาไปตอท
str1
่ าย
้
str3 เป็ นข้อมูลชนิด StringBuffer สาหรับรับคา่
ข้อมูลทีไ่ ดจากต
อข
้
่ อความ
้
เมธอด insert() ใช้สาหรับขอความแทรกระหว
างข
อมู
้
่
้ ล
เดิม ณ ตาแหน่งทีต
่ ้องการ
str3= str1. insert(index, str2);
โดยที่
20


เมธอด delete() ใช้ลบส่วนของขอความในข
อมู
้
้ ล ณ ตาแหน่งที่
ต้องการ
S2 = S1.delete(x, y);
โดยที่
str1 เป็ นข้อมูลชนิด StringBuffer ทีต
่ ้องการลบขอความ
้
str2 เป็ นตัวแปรขอมู
้ ลชนิด StringBuffer สาหรับรับคา่
ข้อมูล str1 ทีล
่ บขอความแล
ว
้
้
x
เป็ นตาแหน่งเริม
่ ตนของตั
วอักขระทีต
่ องการลบ
้
้
y
เป็ นตาแหน่งสิ้ นสุดของตัวอักขระทีต
่ องการลบ
้
เมธอด length() ใช้นับจานวนตัวอักขระของขอมู
้ ล
int n = str.length();
โดยที่
str
เป็ นข้อมูลชนิด StringBuffer ทีต
่ ้องการนับจานวน
21
ตัวอักขระ
public class StringMethod {
public static void main(String[] args) {
String name1 = "Smith";
name1 = name1.concat("
Brown");
System.out.println("=======
StringBuffer Method
System.out.println("=============
String ===============");
========");
System.out.println("name1
= \""+ name1 + "\"");
System.out.println("name2
= \""+ name2 + "\"");
StringBuffer name2
= new StringBuffer("Smith");
System.out.println("name2.insert(5,\"y\")
="+
name2.append("name2.insert(5,"y"));
Brown");
System.out.println("========== StringBuffer ============");
System.out.println("name2
= \""+ name2 + "\"");
System.out.println("=========================
System.out.println("==========
==========="); String Method ===========");
System.out.println("name1
= \""+ name1 + "\""); StringBuider Method
System.out.println("=======
System.out.println("name1.replace(\"h\",\"e\")=
"+
========");
name1.replace("h","e"));
StringBuilder name3 = new StringBuilder(name2);
System.out.println("====================================");
System.out.println("name3 = \""+ name3 + "\"");
System.out.println("name3.delete(4,5)= " +
22
name3.delete(4,5));