Các phương thức:
– boolean hasMoreTokens():kiểm tra còn mảnh nào
không
– String nextToken(): Chuyển đến token kế tiếp
– String nextToken(String delim):
• Ví dụ minh họa: Viết chương trình nhập vào một
chuỗi, in các từ trong chuỗi đó ra màn hình, mỗi từ trên
một dòng
31 trang |
Chia sẻ: nguyenlam99 | Lượt xem: 1081 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Java - Chương 6: Chuỗi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 6
Chuỗi
Chương 6: Chuỗi
oChuỗi
o Lớp String
oCác hàm xử lý chuỗi
o Lớp Character
o Lớp StringBuffer
o Chuỗi là tập các kí tự đứng liền nhau được giới hạn
trong dấu ngoặc kép như: "Hello thế giới Java“.
o Trong những ngôn ngữ lập trình khác một chuỗi được
xem như một mảng các ký tự.
o Trong java cung cấp một lớp String để làm việc với
đối tượng dữ liệu chuỗi cùng các thao tác trên đối
tượng dữ liệu này.
Chuỗi
o Khai báo một xâu rỗng:
Khởi tạo str1 là một xâu trống
Ví dụ: String str1=new String( );
o Khai báo và khởi tạo một xâu bằng một chuỗi cho
trước:
khởi tạo str2 bằng “Hello word”
Ví dụ: String str2=new String(“Hello word”);
o Khai báo và khởi tạo một xâu bằng một mảng kí tự
cho trước:
Ví dụ: char ch[ ]={‘a’,’b’,’c’,’d’,’e’};
String str3=new String[ch];
-> Kết quả str3 là xâu “abcde”
Chuỗi
o Khai báo và khởi tạo một xâu bằng cách chọn một vài
kí tự trong một mảng kí tự cho trước.
Ví dụ: char ch[ ]={‘a’,’b’,’c’,’d’,’e’};
String str4=new String[ch,0,2];
-> Kết quả str4 là xâu “ab” , vì khởi tạo này sẽ khởi tạo
xâu str4 là lấy 2 kí tự từ vị trí thứ 0.
Chuỗi
public class Chuoi1 {
public static void main(String[] args) {
String str1 = new String();
str1 = "Hello VN";
String str2 = new String ("Xin chào, tôi đang học Java”);
String str3 = "Tôi là sinh viên";
System.out.println(str1+"\n"+str2+"\n"+str3);
}}
Khởi tạo
chuỗi
String message = "Welcome to Java!";
String message2 = message;
Các thao
tác cơ
bản trên
chuỗi
Lấy độ dài chuỗi và lấy các ký tự cụ thể trong chuỗi
Ghép chuỗi (concat)
Chuỗi con (substring(index), substring(start, end))
So sánh (equals, compareTo)
Chuyển đổi chuỗi (String Conversions)
Tìm 1 ký tự hoặc chuỗi con trong 1 chuỗi
Lớp String
Cộng 2 chuỗi bằng dấu cộng (+)
o Nối 2 chuỗi tại vị trí cuối cùng của chuỗi đầu tiên
o Ví dụ: String str1=new String(“Hello word”);
System.out.printf(“toi muon noi ”+str1);
-> Kết quả: “toi muon noi Hello word”.
o Java có khả năng tự chuyển bất cứ dữ liệu kiểu số thành
chuổi trước khi cộng vào String.
o Ví dụ:
int n=100;
Float m=100.123;
System.out.printf(“so nguyen la ”+n+”so thuc la “+m);
-> Kết quả: “so nguyen la 100 so thuc la 100.123” .
Các hàm xử lý chuỗi
Nối 2 chuỗi bằng phương thức concat( )
o Nối 2 chuỗi rồi trả về một chuỗi mới.
o Ví dụ: String str1,str2,str3;
str1=”Welcome”;
str2=”hoc.itop.vn”;
str3=str1.concat(str2);
-> Kết quả là str3 sẽ bằng “Welcome hoc.itop.vn”
Lấy độ dài chuỗi:
o Sử dụng phương thức length().
o Ví dụ: String str1=new String(“hoc.itop.vn”);
int n=str1.length( );
->Kết quả là n=11.
Các hàm xử lý chuỗi
Lấy ra một chuỗi con: Sử dụng 2 phương thức
o substring(idx, n): Bắt đầu từ idx lấy n ký tự
o substring(idx): Bắt đầu lấy từ idx đến cuối chuỗi
o Ví dụ:
String message = new String(“Welcome to Java”);
message.substring(0,11);
message.subtring(11) cho ra chuỗi “Java”
Các hàm xử lý chuỗi
o charAt: trả về ký tự tại vị trí định trước
Ví dụ: String str1=new String(“itop.vn”);
char ch=str1.charAt(3);
-> Kết quả là ch=’p’
Các hàm xử lý chuỗi
Duyệt chuỗi:
public class duyetchuoi {
public static void main(String[] args) {
String s1=new String(“an giang”);
int index = 0;
while (index < s1.length()) {
char letter = s1.charAt(index);
System.out.println(letter);
index = index + 1;
}
Các hàm xử lý chuỗi
So sánh 2 chuỗi có giống nhau hay không: Sử dụng 2
phương thức equals và equalsIgnoreCase.
o equals:
So sánh từng ký tự trong 2 chuỗi.
Kết quả trả về có kiểu boolean
Phân biệt chữ hoa và chữ thường
Ví dụ: cho 2 chuỗi:
• String s1 = “Welcome to Java!”;
• String s2 = new String(“Welcome To Java!”);
Khi đó s1.equals(s2) sẽ cho kết quả là False còn
s1.equalsIgnoreCase(s2) sẽ cho kết quả là True.
Các hàm xử lý chuỗi
o compareTo:
So sánh 2 chuỗi sử dụng compareTo(Object object):
– So sánh từng cặp ký tự ở cùng vị trí ở hai chuỗi.
Kết quả trả về = 0, >0 hoặc <0
Giá trị: Nếu s1.compareTo(s2) == 0 thì s2=s1
Nếu s1.compareTo(s2) > 0 thì s2 >s1
Ngược lại thì s2 < s1
Ví dụ: String s1=new String(“kc”);
String s2=new String(“kavcb”);
int a=s1.compareTo(s2);
-> Kết quả là a>0 vì “kc”>”kavcb”
Các hàm xử lý chuỗi
o toCharArray:
Là phương thức đổi chuỗi thành mảng kí tự.
Ví dụ: String str1 = new String(“itop.vn”);
char[ ] ch = str1.toCharArray( );
-> Kết quả là mảng ch={‘i’,’t’,’o’,’p’,’.’,’v’,’n’}
o indexOf:
Trả về vị trí bắt đầu của chuổi con trong chuổi cha
Nếu không tìm thấy trả về -1.
Ví dụ: String str1=new String(“hoc.itop.vn”);
String str2=new String(“op”);
String str3=new String(“ab”);
int n=str1.indexOf(str2);
int m=str1.indexOf(str3);
-> Kết quả là n=7 và m=-1
Các hàm xử lý chuỗi
o startsWith:
Kiểm tra xem chuỗi một có bắt đầu là chuỗi hai?
Trả về giá trị kiểu boolean
Ví dụ: String str1=”hoc.itop.vn”;
String str2=”hoc”;
boolean k=str1.startsWith(str2);
-> Kết quả là k=true
o endsWith:
Kiểm tra xem chuỗi một có kết thúc là chuỗi hai?
Kết quả trả về là kiểu boolean.
Ví dụ: String str1=”hoc.itop.vn”;
String str2=”com”;
boolean k=str1.endsWith(str2);
-> Kết quả là k=false.
Các hàm xử lý chuỗi
o toUpperCase:
Trả về chữ hoa của chuỗi
ví dụ: String str1=”hello”;
String str2=str1.toUpperCase( );
-> Kết quả là str2=”HELLO”;
o toLowerCase:
Trả về chữ thường của chuỗi
Ví dụ: String str1=”hello”;
String str2=str1.toLowerCase( );
-> Kết quả là str2=”hello”;
o copyValueOf:
Trả về một chuỗi được rút ra từ một mảng kí tự.
Ví dụ: char ch[ ]={‘a’,’b’,’c’,’d’,’e’);
String str1=String.copyValueOf(2,2);
-> Kết quả là str1=”cd”
Các hàm xử lý chuỗi
o "Welcome ".trim() // Chuẩn hóa chuỗi
o "Welcome".replace('e','A') // Thay e bởi A
o "Welcome".replaceFirst(“e”,”A”) //Thay chuỗi “e”
xuất hiện đầu tiên bởi chuỗi “A”
o "Welcome".replaceAll(“e”,”A”)
Các hàm xử lý chuỗi
Tìm kiếm vị trí một ký tự trong chuỗi: Sử dụng các
phương thức:
o public int indexOf(int ch)
o public int lastIndexOf(int ch)
o public int indexOf(int ch, int fromIndex)
o public int lastIndexOf(int ch, int endIndex)
o public int indexOf(String str)
o public int lastIndexOf(String str)
o public int indexOf(String ch, int fromIndex)
o public int lastIndexOf(String str, int endIndex)
Các hàm xử lý chuỗi
o Ví dụ: Tìm vị trí một ký tự/ chuỗi con trong một
chuỗi:
"Welcome to Java!".indexOf('W') returns 0.
"Welcome to Java!".indexOf('x') returns -1.
"Welcome to Java!".indexOf('o', 5) returns 9.
"Welcome to Java!".indexOf("come") returns 3.
"Welcome to Java!".indexOf("Java", 5) returns 11.
"Welcome to Java!".indexOf("java", 5) returns -1.
Các hàm xử lý chuỗi
o Nằm trong gói thư viện java.lang
o Ví dụ: String str1=new String(“124”);
int n=Integer.parseInt(str1);
-> Kết quả là n=124
Chuyển từ String sang số
Lớp Character
o Lớp Character bao bọc (wraps) một giá trị kiểu char
trong một đối tượng. Một đối tượng thuộc lớp
Character chứa một thuộc tính duy nhất có kiểu đối
tượng.
o Cung cấp nhiều phương thức để phân loại ký tự
(hoa, thường, chữ cái, số,.) và chuyển đổi giữa
hai kiểu ký tự hoa-thường.
o Hàm tạo: Character(value: char)
Phương thức của lớp Character
• charValue(): char
• compareTo(anotherCharacter: Character): int
• equals(anotherCharacter: Character): boolean
• isDigit(ch: char): boolean/isLetter(ch: char):
boolean
• isLetterOrDigit(ch: char): boolean
• isLowerCase(ch: char): boolean
• isUpperCase(ch: char): boolean
• toLowerCase(ch: char): char
• toUpperCase(ch: char): char
Ví dụ
• Character charObj = new Character('b');
• charObj.compareTo(new Character('a')) returns 1
• charObj.compareTo(new Character('b')) returns 0
• charObj.compareTo(new Character('c')) returns -1
• charObj.compareTo(new Character('d') returns –2
• charObj.equals(new Character('b')) returns true
• charObj.equals(new Character('d')) returns false
Ví dụ
• Viết chương trình đếm tần số xuất hiện của ký tự ‘a’
trong một chuỗi nhập từ bàn phím. Giả sử không phân
biệt ký tự hoa, thường
Lớp StringBuffer
• Lớp StringBuffer có thể được dùng để thay thế cho lớp
String.
• Lớp StringBuffer linh hoạt hơn String: đối tượng
StringBuffer có thể thay đổi. Với string không thể thay
đổi nội dung nó được tạo.
StringBuffer: Các hàm tạo
• public StringBuffer()
– Tạo một StringBuffer rỗng
• public StringBuffer(String str)
– Tạo một StringBuffer với nội dung là chuỗi str
Các phương thức của lớp StringBuffer
• Nối thêm nội dung vào một String Buffer
StringBuffer strBuf = new StringBuffer();
strBuf.append("Welcome");
strBuf.append(' ');
strBuf.append("to");
strBuf.append(' ');
strBuf.append("Java");
Thêm chuỗi
“Welcome
to Java” vào
chuỗi strBuf
Các phương thức của lớp StringBuffer
• Sửa đổi StringBuffer
– Giả sử strBuf chứa chuỗi "Welcome to Java!" trước
mỗi lời gọi phương thức sau:
strBuf.insert(11,"HTML and ");
strBuf.delete(8,11);
strBuf.deleteCharAt(8);
strBuf.reverse();
strBuf.replace(11,15,"HTML");
strBuf.setCharAt(0,'w');
Ví dụ minh họa
• Viết chương trình nhập vào chuỗi s1 từ bàn phím, in s1
ra màn hình, sau đó thực hiện các thao tác sau (Sau
mỗi thao tác đều in chuỗi s1 ra màn hình):
1. Xóa nội dung của chuỗi s1
2. Nhập một chuỗi khác rồi thêm chuỗi đó vào s1
3. Đảo ngược chuỗi s1
4. Nhập vào một số nguyên x (0<x<s1.length), xóa khỏi
chuỗi s1 ký tự tại vị trí x.
Lớp StringTokenizer
• Chuỗi có thể được bẻ thành các mảnh gọi là token bởi các
delimiter.
• Hàm tạo:
– StringTokenizer(String s[,String delim, boolean returnTokens])
• Delim mặc nhiên là “ “. Mỗi ký tự xuất hiện trong delim sẽ
là một ký tự ngăn cách.
• Nếu không có returnTokens hoặc returnTokens = false thì
bỏ qua chuỗi dùng làm delim trong kết quả.
• Ví dụ: String s = "Java is cool.“
StringTokenizer tkz = new StringTokenizer(s);
// cho ra 3 chuỗi là “Java”, “is”, “cool”
StringTokenizer tkz = new StringTokenizer(s,"ac",true);
//Kết quả: “J”, “a”, “v”, “a”, “I”, “s “, “c” và “ool.”
Các phương thức của lớp StringTokenizer
• Các phương thức:
– boolean hasMoreTokens():kiểm tra còn mảnh nào
không
– String nextToken(): Chuyển đến token kế tiếp
– String nextToken(String delim):
• Ví dụ minh họa: Viết chương trình nhập vào một
chuỗi, in các từ trong chuỗi đó ra màn hình, mỗi từ trên
một dòng.
Các file đính kèm theo tài liệu này:
- java_chuong_6_chuoi_9289.pdf