Giáo trình Java cơ bản - Chương 6: Chuỗi

pdf 31 trang huongle 2820
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Java cơ bản - Chương 6: Chuỗi", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_java_co_ban_chuong_6_chuoi.pdf

Nội dung text: Giáo trình Java cơ bản - Chương 6: Chuỗi

  1. Chương 6 Chuỗi
  2. Chương 6: Chuỗi o Chuỗi o Lớp String o Các hàm xử lý chuỗi o Lớp Character o Lớp StringBuffer
  3. Chuỗi 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.
  4. 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”
  5. 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. 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); }}
  6. Lớp String Khởi tạo String message = "Welcome to Java!"; chuỗi String message2 = message; Các thao Lấy độ dài chuỗi và lấy các ký tự cụ thể trong chuỗi tác cơ Ghép chuỗi (concat) bản trên Chuỗi con (substring(index), substring(start, end)) chuỗi 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
  7. Các hàm xử lý chuỗi 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” .
  8. 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.
  9. 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”
  10. 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’
  11. 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; }
  12. 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.
  13. 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 thì s2 >s1 Ngược lại thì s2 Kết quả là a>0 vì “kc”>”kavcb”
  14. 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
  15. 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.
  16. 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”
  17. 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”)
  18. 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)
  19. 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.
  20. Chuyển từ String sang số 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
  21. 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)
  22. 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
  23. 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
  24. 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
  25. 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.
  26. 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
  27. 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(' '); Thêm chuỗi strBuf.append("to"); “Welcome to Java” vào strBuf.append(' '); chuỗi strBuf strBuf.append("Java");
  28. 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');
  29. 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.
  30. 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.”
  31. 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.