Java: Hàm Xử Lý Chuỗi (String) | V1Study

Học viện Đào tạo và Công nghệ V1Study
  • Đào tạo Độ tuổi từ 5 - 11 Độ tuổi từ 12 - 17 Từ 18 tuổi
  • Lập trình Python Lập trình C C++ Java C# - C Sharp Android Scratch Pascal Robot mBot
  • Web ReactJS HTML5 CSS3 JavaScript Node.js JSP ASP.NET Core jQuery PHP
  • FW-CMS Laravel AngularJS Flutter Magento Bootstrap VueJS CodeIgnitor WordPress Sass Drupal
  • Video Video Python Video Lập trình C Video C# Video Java Video HTML5-CSS3-JavaScript Video SQL Server Video PHP Video jQuery Video Android Video C++ Video Scratch
  • Video1 Video XML-JSON Video MySQL Video Excel Video Giải thuật và Lập trình Video Sức khỏe Video Drupal Video mBot Video Giáo dục - Khoa học
  • Other Unity Giải thuật và lập trình Giải thuật và lập trình - C CCNA Mạng máy tính Design Patterns English Facebook SEO Git Tin học đại cương Japanese App-Uti Download
  • Data SQL Server XML JSON MySQL
  • News
Học viện Đào tạo và Công nghệ V1Study ≡ Java Java Core Giới thiệu Download, cài đặt và chạy Kiểu dữ liệu Từ khóa, tên riêng, ghi chú Biến & Hằng Phép toán (Operator) Nhập liệu với Scanner và System.in.read() Bài tập Java cơ bản Điều kiện if-else Điều kiện switch-case Bài tập phần điều kiện Vòng lặp for và for cải tiến while do-while break và continue Bài tập phần vòng lặp Mảng một chiều trong Java Mảng hai chiều trong Java Bài tập phần mảng số Bài tập phần chuỗi và mảng chuỗi Hàm (Function) Bài tập phần hàm ArrayList trong Java Quản lý bộ nhớ trong Java Tìm hiểu về đối tượng StringBuilder trong Java Cách xuống dòng mới khi dùng NetBean hay IntelliJ enum trong Java Hướng đối tượng (OOP) Lớp (Class) và Đối tượng (Object) Truy cập các thuộc tính và phương thức của đối tượng Hàm tạo (Constructor) Bộ khởi tạo cho đối tượng Từ khóa this Bài tập phần Class Từ khóa static Thừa kế (Inheritant) Ghi đè phương thức (Override) Từ khóa super Đa hình (Polymorphism) Bài tập phần Thừa kế & Đa hình Đóng gói (Encapsulation) Trừu tượng (Abstract) Interface (Giao diện) Bài tập phần Abstract Class & Interface Kiểu liệt kê Lớp lồng nhau (Nested Classes) Exceptions Ngoại lệ là gì? Bắt hoặc chỉ định yêu cầu Khối try Khối catch Khối finally Câu lệnh try-with-resources Cách sử dụng try-catch-finally Xác định những ngoại lệ được ném bởi một phương thức Dùng throw để ném ngoại lệ Ngoại lệ kết chuỗi (Chained Exception) Tạo lớp ngoại lệ Ngoại lệ unchecked - Tranh luận Ưu điểm của ngoại lệ throw và throws Ngoại lệ tự định nghĩa KIỂM TRA KIẾN THỨC EXCEPTION Câu hỏi và bài tập phần Exception Functions Hàm xử lý chuỗi (String) Hàm toán học (Math) Hàm Date & Time Video Demo Nhập liệu bằng Scanner trong Java In các số từ 0 đến 100 dùng vòng lặp for Xác định tính nguyên tố Cách khai báo biến trong Java Xác định chính phương Xác định số nguyên hay thực Tìm số nguyên tố trong một khoảng In ra các số chẵn chia hết cho 3 Giải phương trình bậc nhất Giải phương trình bậc hai Nguyên âm, phụ âm hay ký số Cách tạo lớp và đối tượng Cách tạo các getter và setter Cách định nghĩa hàm tạo Cách sử dụng các getter và setter Cách tạo mảng Cách nhập liệu cho mảng Cách tìm Max và Min trong mảng Cách sắp xếp mảng Xóa phần tử có chỉ số cụ thể khỏi mảng Xóa phần tử chứa giá trị cụ thể khỏi mảng Cách dùng ArrayList và viết chương trình dạng Menu Nhập vào 10 số nguyên rồi loại bỏ những giá trị trùng lặp Xóa những phần tử trùng nhau Tuts Cách thay đổi kích thước text trong IntelliJ Một số phím tắt trong IntelliJ IDEA Cách tạo ảnh nền cho jFrame Form Cách sử dụng các class từ project khác API Collection Sắp xếp trong collection Gói java.util Framework Collections Interface Collection List ArrayList Vector LinkedList Set SortedSet HashSet LinkedHashSet Lớp TreeSet Map HashMap Hashtable TreeMap LinkedHashMap Queue PriorityQueue Arrays Sắp xếp Collections Các cải tiến trong các lớp Collections KIỂM TRA KIẾN THỨC COLLECTIONS CÂU HỎI VÀ BÀI TẬP COLLECTIONS Phương thức Collections.synchronizedList() và ví dụ So sánh ArrayList và Vector Generics Tổng quan về Generics Lớp generic Phương thức generic Kiểu suy luận (Type Inference) Collection và Generic Khả năng tương tác với Generics KIỂM TRA KIẾN THỨC GENERICS CÂU HỎI VÀ BÀI TẬP GENERICS Regular Expression Giới thiệu biểu thức chính quy Kiểm tra dữ liệu (Test Harness) Hằng chuỗi Lớp Character Các lớp ký tự định nghĩa trước Bộ định lượng (Quantifier) Nhóm thu thập So khớp ranh giới Các phương thức của lớp Pattern Các phương thức của lớp Matcher Các phương thức của lớp PatternSyntaxException Hỗ trợ Unicode Lớp Pattern Lớp Matcher Bài tập phần Biểu thức chính quy Gói java.lang Giới thiệu Lớp Object Bộ dọn rác (Garbage Collector) Các lớp Wrapper Hàm toán học (Math) Lớp System Lớp Class Hàm xử lý chuỗi (String) KIỂM TRA KIẾN THỨC JAVA.LANG Taught Thừa kế (Inheritant) Chữa bài tập 1 phần thừa kế Trừu tượng (Abstract) và Đa hình (Polymorphism) Interface Lớp generic try-catch-finally Thao tác với MySQL Java IO Giới thiệu I/O Stream Byte Stream Character Stream Buffered Stream Scanning và Formatting I/O từ Command Line Data Stream Object Stream Đường dẫn là gì? (và sự kiện hệ thống tập tin khác) Lớp Path Các hoạt động với File Kiểm tra tập tin hoặc thư mục Xóa tập tin hoặc thư mục Sao chép tập tin hoặc thư mục Di chuyển tập tin hoặc thư mục Quản lý siêu dữ liệu (File và File lưu các thuộc tính) Đọc, ghi và tạo tập tin Tập tin truy cập ngẫu nhiên Tạo và đọc thư mục Liên kết, liên kết tượng trưng hay không phải Đi bộ qua cây tập tin Tìm tập tin Quan sát sự thay đổi thư mục Các phương thức hữu dụng khác Kế thừa mã lệnh tập tin I/O Cách tạo và chèn dữ liệu vào file Excel Java DOM Parser - Đọc, tạo, sửa tài liệu XML KIỂM TRA KIẾN THỨC JAVA IO Câu hỏi và bài tập phần java.io file Java NIO Lớp Console Gói java.util.zip Lớp Deflater Lớp Inflater Lớp DeflaterInputStream Lớp DeflaterOutputStream Các lớp InflaterInputStream và InflaterOutputStream Gói java.nio Lớp Files và các thuộc tính KIỂM TRA KIẾN THỨC JAVA NIO Concurrency - Thread Tiến trình (Progress) và Luồng (Thread) Định nghĩa và khởi tạo Thread Dừng thực thi với phương thức Thread.sleep() Ngắt và kết nối Thread Ví dụ SimpleThreads Giao thoa luồng Lỗi nhất quán bộ nhớ Phương thức đồng bộ hóa Khóa nội tại và đồng bộ hóa Truy cập atomic Liveness Khối bảo vệ Đối tượng bất biến Đối tượng Lock Giao diện (interface) Executor Thread Pool Framwork Fork/Join Gói concurrent Biến atomic Số ngẫu nhiên đồng thời Câu hỏi và bài tập phần Concurrency - Thread Thread Swing Về JFC và Swing Biên dịch và chạy chương trình Swing Học Swing với NetBeans IDE Thiết lập dự án CelsiusConverter Cơ bản về IDE NetBeans Tạo giao diện CelsiusConverter Điều chỉnh giao diện CelsiusConverter Thêm logic cho ứng dụng Cách dùng bộ chứa mức top Lớp JComponent JScrollPane JSlider Giới thiệu về Timer JProgressBar Cách sử dụng Text Component JFormattedTextField Cách sử dụng ButtonGroup Cách sử dụng Color Chooser Cách tạo hộp thoại (Dialog) JEditorPane Cách sử dụng nhãn (Label) Cách sử dụng Panel Cách sử dụng Password Field Cách sử dụng Slider (JSlider) Cách sử dụng Tabbed Pane Cách sử dụng bảng (Table) Text Area Cách sử dụng Text Field (JTextField) Cách sử dụng Tool Bar Cách sử dụng Tool Tip Cách sử dụng Tree Cách sử dụng HTML trong Swing Component JTextPane Cách sử dụng đường bao (Border) Cách sử dụng Icon Demo-Calculator-V1 Kiểm tra kiến thức Swing-JDBC Cách sử dụng JList Bài hướng dẫn số 1 JDBC Database Access Giới thiệu JDBC Kiến trúc JDBC Tổng quan về cơ sở dữ liệu quan hệ Thiết lập kết nối Cách kết nối tới các RDBMS trong Java JDBC Ví dụ Commit và Rollback Kết nối Cơ sở dữ liệu Java với MySQL Demo Java Select, Insert, Update, Delete với MySQL BÀI TẬP PHẦN JDBC Code ví dụ về serverTimezone Lập trình truyền thông Tổng quan về lập trình truyền thông References InputStream isWhitespace Format String Syntax Class Paths toUri toAbsolutePath toRealPath equals startsWith endsWith Phương thức iterator() Interface Comparator<T> Interface Comparable<T> Class Files Interface Closeable Class FileSystemException Class FileSystem Enum LinkOption Class FileTime Interface BasicFileAttributes Interface PosixFileAttributes Class PosixFilePermissions Class UserPrincipalLookupService Class FileStore Interface BasicFileAttributeView Interface DosFileAttributeView Interface PosixFileAttributeView Interface FileOwnerAttributeView Interface AclFileAttributeView Interface UserDefinedFileAttributeView Interface DosFileAttributes Cách dùng NetBeans IDE Class Scanner Đóng và mở Form trong Java Swing Lấy kích thước của Form hiện thời Sửa chiều rộng của phần tử con bằng chiều rộng phần tử cha i18n Examples Ví dụ lớp Copy Ví dụ lớp Chmod Ví dụ lớp Xdd Ví dụ lớp DiskUsage Ví dụ HelloWorldSwing Ví dụ lớp TopLevelDemo BoxAlignmentDemo BorderDemo BoxLayoutDemo IconDemoApp FormattedTextFieldDemo ButtonDemo ButtonHtmlDemo TextAreaDemo TextDemo TextSamplerDemo HtmlDemo BasicDnD FocusConceptsDemo TabbedPaneDemo TableRenderDemo TableToolTipsDemo ActionDemo PasswordDemo TextFieldDemo DialogDemo TextInputDemo TreeDemo TreeIconDemo TreeIconDemo2 ComboBoxDemo ComboBoxDemo2 DynamicTreeDemo GenealogyExample TreeExpandEventDemo TreeExpandEventDemo2 CheckBoxDemo ListDialog LabelDemo SplitPaneDemo SliderDemo2 TableDialogEditDemo TextComponentDemo ColorChooserDemo ToolBarDemo ToolBarDemo2 ScrollDemo ScrollDemo2 TableDemo ButtonTabComponent TabComponentDemo TabbedPaneDemo Converter ListDemo TableSelectionDemo SimpleTableDemo SimpleTableSelectionDemo TableFTFEditDemo TableSortDemo TableFilterDemo TablePrintDemo ListSelectionDemo SharedModelDemo IntegerEditor TableSorter ColorRenderer TableSorterDemo ColorEditor CustomDialog Framework ListOfNumbers ListOfNumbers2 SliderDemo ColorChooserDemo2 RadioButtonDemo SpinnerDemo SpinnerDemo2 SpinnerDemo3 SpinnerDemo4 ListDataEventDemo CustomComboBoxDemo Đồng hồ số với thread Hiển thị ảnh trên JPanel Practicals Bài tập phần Swing - Practical 1 - Form Bài tập phần Swing - Practical 2 - Event Bài tập phần Swing - Practical 3 - JSlider - JProgressBar Bài tập phần Swing - Practical 4 - Data JDBC Bài tập phần Swing - Practical 5 - Game xếp số Test Java1 Solutions Solution phần Java IO Solution tham khảo Bài tập phần Class Solution Practical 1 Solution phần Exception Hệ thống quản lý số điện thoại Hệ thống quản lý tin tức (news) Solution câu hỏi và bài tập phần Generics Solution câu hỏi và bài tập Collections Solution Concurrency-Thread Solutions I18N Solution bài tập phần vòng lặp JavaFX Tổng quan JavaFX Cài đặt JavaFX Kiến trúc của JavaFX Cấu trúc ứng dụng JavaFX và ví dụ Tạo hình dạng 2 chiều (2D) Vẽ đoạn thẳng 2D Vẽ hình chữ nhật 2D Vẽ hình chữ nhật tròn 2D Vẽ đường tròn/hình tròn 2D Vẽ hình elip 2D Vẽ hình đa giác (Polygon) 2D Vẽ đa giác mở (Polyline) 2D Vẽ đường cong hình khối (CubicCurve) 2D Vẽ đường cong bậc 2 (QuadCurve) 2D Vẽ cung (Arc) 2D Vẽ hình SVG 2D Phần tử đường dẫn LineTo 2D Phần tử đường dẫn HLineTo 2D Phần tử đường dẫn VLineTo 2D Phần tử đường dẫn QuadCurveTo 2D Phần tử đường dẫn CubicCurveTo 2D Phần tử đường dẫn ArcTo 2D Thao tác Union Thao tác Intersection Thao tác Subtraction Tạo văn bản (Text) Hiệu ứng chỉnh màu (ColorAdjust) Hiệu ứng nhập màu (ColorInput) Hiệu ứng nhập ảnh (ImageInput) Hiệu ứng trộn (Blend) Hiệu ứng nở (Bloom) Hiệu ứng phát sáng (Glow) Hiệu ứng làm mờ hộp (BoxBlur) JUnit Tổng quan về JUnit Thiết lập môi trường Framework kiểm thử JUnit Cách sử dụng cơ bản API Viết chương trình kiểm thử Sử dụng Assertion Thủ tục thực thi Thực thi các test Test suite Bỏ qua test Thời gian test Ngoại lệ (Exception) test Tham số hóa test Chạy JUnit bằng Ant Thiết lập JUnit với Eclipse Phần mở rộng JUnit với Netbeans IDE Thiết lập JUnit test trong IntelliJ Java: Hàm xử lý chuỗi (String) Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên

Lớp String cung cấp khá nhiều hàm (hay phương thức) dùng cho việc thao tác chuỗi (hay xâu ký tự), một số hàm trong đó khá giống với các hàm xử lý chuỗi trong lập trình C. Ta cần lưu ý rằng một biến chuỗi hay một hằng chuỗi thì đều được coi là một đối tượng, và vì vậy nó có thể có quyền sử dụng tất cả các hàm được xây dựng sẵn trong lớp String. Do đó, nếu một hàm nào đó trả về một chuỗi thì ta có quyền sử dụng trực tiếp một hàm nữa ngay sau hàm đó vì chuỗi trả về là một đối tượng mới.

Giả sử ta có một chuỗi str được khai báo và gán như sau: String str="ABCDEF", thì dưới đây sẽ trình bày các hàm chủ yếu mà ta có thể áp dụng trên chuỗi này.

Danh sách các hàm xử lý chuỗi

1. charAt(int index):

Hàm này trả về một ký tự ứng với chỉ số index trong chuỗi hiện thời. Ví dụ, str.charAt(3) sẽ trả về ký tự 'D'. Lưu ý rằng ký tự đầu tiên của chuỗi có chỉ số là 0.

2. codePointAt(int index):

Hàm này trả về một số chính là thứ tự ký tự trong bảng mã ASCII của ký tự tương ứng với chỉ số index.

String s = "abcdef"; System.out.println(s.codePointAt(2)); //In ra: 99

3. codePointBefore(int index):

Hàm này tương tự như hàm codePointAt(), nhưng trả về thứ tự ký tự trong bảng mã ASCII của ký tự trước ký tự có chỉ số index.

String s = "abcdef"; System.out.println(s.codePointBefore(2)); //In ra: 98

4. compareTo(String st):

Hàm này dùng để so sánh hai đối tượng có kiểu dữ liệu String là chuỗi hiện thời và chuỗi st. Phép so sánh sẽ trả về một số nguyên là hiệu của cặp ký tự cuối cùng đem so sánh giữa ký tự của chuỗi hiện thời với chuỗi st. Thao tác so sánh dựa trên giá trị Unicode của từng ký tự trong hai chuỗi bắt đầu từ bên trái hai chuỗi. Cụ thể, kết quả trả về là một số âm khi chuỗi st có thứ tự trong bảng chữ cái lớn hơn chuỗi hiện thời. Nếu kết quả trả về là số 0 thì st giống hệt chuỗi hiện thời. Còn nếu kết quả trả về một số dương thì chuỗi hiện thời lớn hơn chuỗi st.

String st = "ABcd"; str.compareTo(st)); //Trả về số -32 vì ký tự 'C' của str có mã là 67, còn ký tự 'c' trong chuỗi đối số có mã là 99.

Lưu ý: Unicode là một chuẩn trong đó nó cung cấp một số duy nhất cho mỗi ký tự mà không quan tâm đến nền tảng, chương trình, hay ngôn ngữ. Chuẩn Unicode được áp dụng trong lập trình bởi các hãng công nghệ lớn như Google, IBM, Apple, Microsoft, và những hãng khác.

5. compareToIgnoreCase(String st):

Phương thức này tương tự phương thức compareTo(), chỉ khác ở một điểm là nó không phân biệt chữ hoa hay thường giữa hai chuỗi đem so sánh.

"IJK".compareToIgnoreCase("ijk"); //Trả về 0.

6. concat(String st):

Hàm này có nhiệm vụ nối chuỗi st vào sau chuỗi hiện thời và trả về chính chuỗi hiện thời sau khi nối.

str.concat("123"); //Kết quả là chuỗi str chứa "ABCDEF123".

7. contains(CharSequence s):

Hàm này dùng để tìm kiếm chuỗi con s trong chuỗi hiện thời. Nếu tìm thấy trả về true, không tìm thấy trả về false.

String str = "V1Study.com"; System.out.println(str.contains("V1")); //In ra: true System.out.println(str.contains("VS")); //In ra: false

8. contentEquals(CharSequence s):

Hàm có nhiệm vụ so sánh chuỗi s với chuỗi hiện thời, nếu giống nhau thì hàm trả về true, ngược lại sẽ trả về false.

String s = "V1Study"; System.out.println(s.contentEquals("V1St")); //In ra: false System.out.println(s.contentEquals("V1Study")); //In ra: true

9. copyValueOf(char[] data):

Hàm sẽ sao chép dữ liệu từ mảng data sang chuỗi hiện thời.

char[] data = {'a', 'b', 'c'}; str = String.copyValueOf(data); /* Sau câu lệnh này thì biến str sẽ chứa chuỗi "abc" */

10. copyValueOf(char[] data, int offset, int count):

Hàm này có nhiệm vụ sao chép các ký tự của mảng data bắt đầu từ vị trí offset với số lượng count ký tự.

str = String.copyValueOf(data, 1, 2); //Sao chép vào biến chuỗi str hai ký tự 'b' và 'c' của mảng data

11. endsWith(String suffix):

Kiểm tra xem chuỗi có kết thúc bằng xâu suffix hay không, nếu đúng thì trả về true, ngược lại thì trả về false.

str.endWith("HI"); //Trả về true vì chuỗi str kết thúc là "HI"

12. equals(Object obj):

Nhiệm vụ của hàm này là để so sánh đối tượng obj với chuỗi hiện thời, nếu giống nhau thì trả về true, ngược lại sẽ trả về false. Lưu ý là việc so sánh là có tính đến ký tự hoa thường.

String s = "Study"; int n = 10; System.out.println(s.equals("V1Study")); //In ra: false System.out.println(s.equals(n)); //In ra: false System.out.println(s.equals("Study")); //In ra: true

13. equalsIgnoreCase(String str):

Hàm này dùng để so sánh chuỗi str với chuỗi hiện thời mà không quan tâm đến chữ hoa hay thường.

String s = "abc"; System.out.println(s.equals("ABC")); //In ra: true

14. getBytes():

Hàm này dùng để mã hóa chuỗi hiện thời sử dụng bảng mã mặc định của hệ thống và trả về một mảng kiểu byte.

System.out.println("V1Study".getBytes()); //In ra: [B@1db9742

15. getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin):

Hàm này dùng để copy nội dung của chuỗi hiện thời vào mảng ký tự dst. Nội dung copy bắt đầu từ vị trí có chỉ số srcBegin đến vị trí có chỉ số srcEnd-1, và nội dung copy được sẽ được đặt tại vị trí bắt đầu từ chỉ số dstBegin của mảng dst.

String str = "V1Study"; char[] ch = new char[30]; str.getChars(0, 3, ch, 0); System.out.println(ch); //Sẽ in ra: V1S str.getChars(3, str.length(), ch, 3); System.out.println(ch); //Sẽ in ra: V1Study

16. hasCode():

Hàm này trả về mã băm cho chuỗi hiện thời.

String str = "V1Study"; System.out.println(str.hashCode()); //In ra: 498957294

17. indexOf(int ch):

Trả về một số nguyên là vị trí (theo chỉ số) xuất hiện đầu tiên của ký tự có giá trị mã Unicode là ch trong chuỗi hiện thời. Miền giá trị của ch là từ 0 đến 0xFFFF (0 đến 65536). Ta cũng có thể thay ch bằng một ký tự cụ thể. Nếu không tìm thấy thì hàm trả về -1. Ví dụ, nếu chuỗi s có nội dung là "XYZYX" thì ta có như sau:

s.indexOf(65); //Sẽ trả về -1 vì chuỗi s không có ký tự nào có mã là 65 s.indexOf('Y'); //Sẽ trả về số 1 vì đây là chỉ số của ký tự Y đầu tiên của chuỗi s

18. indexOf(int ch, int fromIndex):

Hàm này tương tự như hàm trên, chỉ khác ở một điểm là việc tìm kiếm và lấy chỉ số bắt đầu từ vị trí có chỉ số fromIndex.

s.indexOf('Y', 2); //Sẽ trả về 3 vì vị trí bắt đầu tìm kiếm là từ chỉ số 2, tức là từ ký tự thứ 2

19. indexOf(String st):

Hàm này sẽ tìm chuỗi st trong chuỗi hiện thời, trả lại vị trí xuất hiện đầu tiên của chuỗi st trong chuỗi khi tìm thấy, trả về -1 nếu không tìm thấy.

str.indexOf("CD"); //Trả về 2 vì chuỗi "CD" có trong chuỗi "ABCDEFGHI" ở vị trí chỉ số 2.

20. indexOf(String st, int fromIndex):

Hàm này tương tự hàm trên, có điểm khác là việc tìm kiếm chuỗi st bắt đầu từ vị trí chỉ số fromIndex.

str.indexOf("CD", 3); //Trả về -1 vì từ vị trí chỉ số 3 không tìm thấy chuỗi "CD"

21. isEmpty():

Hàm này sẽ trả về true nếu chuỗi hiện thời có kích thước bằng 0, ngược lại thì hàm trả về false.

String str = "V1Study"; System.out.println(str.isEmpty()); //In ra: false str = ""; System.out.println(str.isEmpty()); //In ra: true

22. lastIndexOf(int ch):

Hàm này trả lại vị trí chỉ số của ký ch cuối cùng trong chuỗi.

System.out.print("Đào to Lp trình viên".lastIndexOf('t')); /* In ra giá trị là 12 vì ký tự 't' cuối cùng của chuỗi có chỉ số 12 */

23. lastIndexOf(int ch, int lastIndex):

Trả lại vị trí xuất hiện cuối cùng của ký tự có mã ch (từ 0 đến 65536) trong xâu nhưng bắt đầu từ vị trí 0 đến vị trí lastIndex. Bạn cũng có thể sử dụng ch là một ký tự cụ thể.

String s3 = "ab123ab321"; s3.lastIndexOf(97, s3.length()); //Trả về 5, 97 là mã của ký tự 'a' s3.lastIndexOf('b', s3.length()); //Trả về 6

24. lastIndexOf(String st):

Hàm này ngược với hàm thứ 10 ở trên, có nghĩa là hàm trả về vị trí xuất hiện cuối cùng của chuỗi st trong chuỗi hiện thời.

String s1="abc123bca"; s1.lastIndexOf("bc"); //Trả về số 6

25. lastIndexOf(String st, int lastIndex):

Hàm trả lại vị trí xuất hiện cuối cùng của chuỗi st trong chuỗi hiện thời bắt đầu từ vị trí 0 đến lastIndex.

String s2="abacad"; s2.lastIndexOf("a", 3); //Trả về 2

26. length():

Hàm này dùng để lấy chiều dài của chuỗi hiện thời.

String s4 = "1a2b3c"; s4.length(); //Trả về 6

27. replace(char oldChar, char newChar):

Hàm có nhiệm vụ thay thế tất cả các ký tự oldChar của chuỗi hiện thời bằng các ký tự newChar và trả về chuỗi mới tương ứng.

String s5 = "a1a2a3";

s5.replace('a', 'A'); //Sau câu lệnh này, s5 sẽ chứa chuỗi "A1A2A3"

28. startsWith(String prefix):

Hàm này sẽ kiểm tra xem xâu có bắt đầu bằng xâu prefix không, trả lại true nếu đúng, ngược lại thì trả lại false.

String s6 = "V1Study"; s6.startsWith("V1"); //Trả về true

29. substring(int beginIndex):

Hàm có nhiệm vụ trả về một chuỗi con trong chuỗi hiện thời bắt đầu từ vị trí chỉ số beginIndex.

String s7 = "America"; s7.substring(3); //Trả vể chuỗi "rica"

30. substring(int beginIndex, int endIndex):

Hàm trả lại một xâu con trong xâu hiện tại bắt đầu từ vị trí beginIndex đến vị trí endIndex-1.

s7.substring(1, 5); //Trả về "meri"

31. toCharArray():

Hàm có tác dụng chuyển chuỗi hiện thời sang một mảng ký tự nếu bạn muốn thao tác chuỗi hiện thời theo dạng mảng ký tự.

32. toLowerCase():

Chuyển tất cả các ký tự trong chuỗi hiện thời sang chữ thường.

String s8 = "VIETNAM"; s8.toLowerCase(); //s8 sẽ chứa chuỗi "vietnam"

33. toUpperCase():

Hàm chuyển tất cả các ký tự của chuỗi sang chữ hoa.

String s9 = "programming"; s9.toUpperCase(); //s9 sẽ chứa chuỗi "PROGRAMMING"

34. trim():

Tác dụng của hàm này là xoá tất cả các ký tự trắng (Space) ở đầu và cuối chuỗi hiện thời.

String s10 = " Thuy "; s10.trim(); //Sau câu lệnh này thì s10 sẽ chứa "Thuy"

35. valueOf(giá_trị):

Nếu bạn muốn chuyển một giá_trị bất kỳ nào đó sang dạng chuỗi thì bạn sử dụng đến hàm này. Ví dụ dưới đây sẽ chuyển giá trị true (có kiểu boolean) thành chuỗi.

String s11 = String.valueOf(true); //Sau câu lệnh này thì s11 sẽ chứa chuỗi "true"

Tham khảo các bài tập về chuỗi và mảng chuỗi tại: https://v1study.com/java-bai-tap-phan-chuoi-va-mang-chuoi.html

Video tham khảo một số cách xử lý chuỗi tại ĐÂY.

Dưới đây chúng ta sẽ tìm hiểu một số ví dụ áp dụng các hàm xử lý chuỗi trong Java.

Ví dụ về hàm xử lý chuỗi

Ví dụ 1:

Viết chương trình nhập vào một chuỗi str và đếm xem trong chuỗi đó có bao nhiêu ký tự 'a'. Chương trình được viết như sau:

import java.util.Scanner; public class DemKyTu { public static void main(String[] args) { Scanner boNhap = new Scanner(System.in); //tạo một bộ nhập int count = 0; //khai báo và khởi tạo biến đếm ký tự String str = new String(); //tạo một chuỗi System.out.print("Mi bn nhp 1 chui: "); str = boNhap.nextLine(); //tiến hành nhập một chuỗi //thuật toán đếm số ký tự 'a' for (int i = 0; i < str.length(); i++) { //lấy từng ký tự trong chuỗi để kiểm tra if (str.charAt(i) == 'a') { //nếu ký tự nào bằng ký tự 'a' count++; //thì tăng biến đếm lên 1 } } System.out.printf("Chui \"%s\" có %d ký t 'a'.%n", str, count); //in ra kết quả } }

Ví dụ 2:

Yêu cầu người dùng nhập vào một chuỗi rồi đếm xem chuỗi đó có bao nhiều từ (mỗi từ cách nhau bằng một hoặc nhiều dấu cách). Chương trình được viết như sau:

import java.util.Scanner; public class DemTu { public static void main(String[] args) { Scanner input = new Scanner(System.in); int count = 0; System.out.print("Nhp mt chui bt k: "); String str = input.nextLine(); for (int i = 0; i < str.length() - 1; i++) { /* lấy từng ký tự của chuỗi từ ký tự đầu tiên đến ký tự gần cuối */ if (str.charAt(i) == ' ' && str.charAt(i + 1) != ' ') { /* nếu ký tự đem lấy là dấu cách và đồng thời ký tự sau đó không phải dấu cách */ count++; /* thì tăng biến đếm lên 1 (đếm được 1 từ) */ } } if (str.charAt(0) != ' ') { /* nếu ký tự đầu tiên không phải dấu cách (không thỏa mãn thuật toán tại vòng lặp for) */ count++; //thì đếm nốt từ đầu tiên của chuỗi } System.out.printf("Chui \"%s\" có %d t.%n", str, count); } }

Ví dụ 3:

Nhập vào họ và tên của một người. Kiểm tra xem người đó có phải họ "Dang" không? Sau đây là đoạn mã thực hiện yêu cầu:

import java.util.Scanner; public class CheckTu { public static void main(String[] args) { Scanner nhapLieu = new Scanner(System.in); System.out.print("Mi bn nhp h và tên: "); String hovaten = nhapLieu.nextLine(); hovaten = hovaten.trim(); //Cắt tất cả các dấu cách ở đầu và cuối chuỗi // Kiểm tra xem từ ở đầu có phải là "Dang" không? if (hovaten.startsWith("Dang")) { System.out.println("H ca bn là \"Dang\""); } else { System.out.println("Bn không mang h\"Dang\""); } } }

Tham khảo các bài tập về chuỗi và mảng chuỗi tại ĐÂY.

» Tiếp: Hàm toán học (Math) « Trước: Câu hỏi và bài tập phần Exception Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Copied !!! Copy linkCopied link!
Bạn muốn tìm kiếm điều gì?

Từ khóa » Tách Từng Ký Tự Trong Chuỗi C#