Java - Chương 6: Chuỗi

Chuỗi Lớp String Các hàm xử lý chuỗi Lớp Character Lớp StringBuffer

pptx31 trang | Chia sẻ: thuychi16 | Lượt xem: 857 | Lượt tải: 0download
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 6ChuỗiChương 6: ChuỗiChuỗiLớp StringCác hàm xử lý chuỗiLớp CharacterLớp StringBufferChuỗ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“.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ự.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ỗiKhai báo một xâu rỗng:Khởi tạo str1 là một xâu trốngVí dụ: String str1=new String( ); 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”); 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ỗiKhai 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ỗipublic 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);     }}Lớp StringCộng 2 chuỗi bằng dấu cộng (+)Nối 2 chuỗi tại vị trí cuối cùng của chuỗi đầu tiênVí dụ: String str1=new String(“Hello word”); System.out.printf(“toi muon noi ”+str1);-> Kết quả: “toi muon noi Hello word”.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.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ỗiNối 2 chuỗi bằng phương thức concat( )Nối 2 chuỗi rồi trả về một chuỗi mới.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:Sử dụng phương thức length().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ỗiLấy ra một chuỗi con: Sử dụng 2 phương thứcsubstring(idx, n): Bắt đầu từ idx lấy n ký tựsubstring(idx): Bắt đầu lấy từ idx đến cuối chuỗiVí 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ỗicharAt: 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ỗiDuyệt chuỗi:public class duyetchuoi { public static void main(String[] args) { String s1=new String(“an giang”); int index = 0; while (index 0 hoặc 0 thì s2 >s1 Ngược lại thì s2 Kết quả là a>0 vì “kc”>”kavcb”Các hàm xử lý chuỗitoCharArray: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’}indexOf:Trả về vị trí bắt đầu của chuổi con trong chuổi chaNế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ỗistartsWith:Kiểm tra xem chuỗi một có bắt đầu là chuỗi hai?Trả về giá trị kiểu booleanVí dụ: String str1=”hoc.itop.vn”; String str2=”hoc”; boolean k=str1.startsWith(str2);-> Kết quả là k=trueendsWith: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ỗitoUpperCase:Trả về chữ hoa của chuỗiví dụ: String str1=”hello”; String str2=str1.toUpperCase( );-> Kết quả là str2=”HELLO”;toLowerCase:Trả về chữ thường của chuỗiVí dụ: String str1=”hello”; String str2=str1.toLowerCase( );-> Kết quả là str2=”hello”;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"Welcome ".trim() // Chuẩn hóa chuỗi"Welcome".replace('e','A') // Thay e bởi A"Welcome".replaceFirst(“e”,”A”) //Thay chuỗi “e” xuất hiện đầu tiên bởi chuỗi “A”"Welcome".replaceAll(“e”,”A”)Các hàm xử lý chuỗiTìm kiếm vị trí một ký tự trong chuỗi: Sử dụng các phương thức:public int indexOf(int ch)public int lastIndexOf(int ch)public int indexOf(int ch, int fromIndex)public int lastIndexOf(int ch, int endIndex)public int indexOf(String str)public int lastIndexOf(String str)public int indexOf(String ch, int fromIndex)public int lastIndexOf(String str, int endIndex)Các hàm xử lý chuỗiVí 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ỗiNằm trong gói thư viện java.langVí 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 CharacterLớ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.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.Hàm tạo: Character(value: char)Phương thức của lớp CharactercharValue(): charcompareTo(anotherCharacter: Character): intequals(anotherCharacter: Character): boolean isDigit(ch: char): boolean/isLetter(ch: char): booleanisLetterOrDigit(ch: char): booleanisLowerCase(ch: char): booleanisUpperCase(ch: char): booleantoLowerCase(ch: char): chartoUpperCase(ch: char): charVí dụCharacter charObj = new Character('b');charObj.compareTo(new Character('a')) returns 1charObj.compareTo(new Character('b')) returns 0charObj.compareTo(new Character('c')) returns -1charObj.compareTo(new Character('d') returns –2charObj.equals(new Character('b')) returns truecharObj.equals(new Character('d')) returns falseVí 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ườngLớp StringBufferLớ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ỗngpublic StringBuffer(String str)Tạo một StringBuffer với nội dung là chuỗi strCác phương thức của lớp StringBufferNối thêm nội dung vào một String BufferStringBuffer 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 strBufCác phương thức của lớp StringBufferSửa đổi StringBufferGiả 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ọaViế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 s12. Nhập một chuỗi khác rồi thêm chuỗi đó vào s13. Đảo ngược chuỗi s14. 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 StringTokenizerChuỗ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 StringTokenizerCác phương thức: boolean hasMoreTokens():kiểm tra còn mảnh nào khôngString nextToken(): Chuyển đến token kế tiếpString 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.
Tài liệu liên quan