Thứ Bảy, 4 tháng 5, 2024

3.8: Tách chuỗi

 


1.  Tách chuỗi thành các phần với độ dài cố định

2. Tách chuỗi thành các phần với kích thước cố định

3. Tách chuỗi thành các từ và số riêng biệt 

a. Không xử lý từ có cả số và chữ

b. Có xử lý

1.

import java.util.Scanner; public class TachChuoi { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Nhập chuỗi: "); String chuoi = scanner.nextLine(); scanner.close(); // Tách chuỗi thành các từ String[] tu = chuoi.split(" "); System.out.println("Các từ có độ dài bằng 5:"); for (String word : tu) { if (word.length() == 5) { System.out.println(word); } } } }

2.


public class Main { public static void main(String[] args) { String input = "hel4lo worlds 321java 873"; int fixedSize = 5; String[] parts = splitString(input, fixedSize); for (String part : parts) { System.out.println(part); } } public static String[] splitString(String input, int fixedSize) { int length = (int) Math.ceil((double) input.length() / fixedSize); String[] parts = new String[length]; int start = 0; for (int i = 0; i < length; i++) { int end = Math.min(start + fixedSize, input.length()); parts[i] = input.substring(start, end); start = end; } return parts; } }


Kết quả sẽ là:


Dưới đây là cách hoạt động của đoạn mã:

  1. Nhập chuỗi và kích thước cố định: Trước tiên, chúng ta nhập chuỗi cần tách (input) và kích thước cố định mà mỗi phần tách sẽ có (fixedSize).

  2. Tạo mảng để lưu các phần đã tách: Chúng ta tạo một mảng các chuỗi (parts) để lưu kết quả của việc tách chuỗi.

  3. Xác định số lượng phần cần tạo: Chúng ta tính số lượng phần cần tạo bằng cách chia độ dài của chuỗi cho kích thước cố định. Nếu độ dài chuỗi không chia hết cho kích thước cố định, chúng ta cần làm tròn lên bằng cách sử dụng hàm Math.ceil.

  4. Tách chuỗi thành các phần: Chúng ta sử dụng một vòng lặp để tách chuỗi ban đầu thành các phần. Vòng lặp sẽ chạy qua số lượng phần cần tạo. Trong mỗi vòng lặp, chúng ta xác định vị trí bắt đầu của phần tiếp theo (start) và vị trí kết thúc của phần hiện tại (end). Sau đó, chúng ta sử dụng phương thức substring của lớp String để tách chuỗi từ vị trí start đến end và lưu vào mảng parts.

  5. Trả về kết quả: Cuối cùng, chúng ta trả về mảng parts chứa các phần đã tách.

3.a.


import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { String input = "hel4lo worlds 321java 873"; String[] parts = splitString(input); List<String> words = new ArrayList<>(); List<String> numbers = new ArrayList<>(); for (String part : parts) { if (containsOnlyLetters(part)) { words.add(part); } else if (containsOnlyDigits(part)) { numbers.add(part); } } System.out.println("Phần chữ: " + String.join(" ", words)); System.out.println("Phần số: " + String.join(" ", numbers)); } public static String[] splitString(String input) { return input.split("\\s+"); } public static boolean containsOnlyLetters(String str) { return str.matches("[a-zA-Z]+"); } public static boolean containsOnlyDigits(String str) { return str.matches("[0-9]+"); } }

Kết quả sẽ là:


3.b.

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String chuoi = "hel4lo worlds 321java 873"; // Tạo một biểu thức chính quy để tìm các từ Pattern patternTu = Pattern.compile("[a-zA-Z]+"); Matcher matcherTu = patternTu.matcher(chuoi); // Tạo một biểu thức chính quy để tìm các số Pattern patternSo = Pattern.compile("\\d+"); Matcher matcherSo = patternSo.matcher(chuoi); // Tạo các chuỗi để lưu kết quả StringBuilder phanTu = new StringBuilder(); StringBuilder phanSo = new StringBuilder(); // Tìm và ghi các từ vào phần chữ while (matcherTu.find()) { phanTu.append(matcherTu.group()).append(" "); } // Tìm và ghi các số vào phần số while (matcherSo.find()) { phanSo.append(matcherSo.group()); } // In kết quả System.out.println("Phần chữ: " + phanTu.toString().trim()); System.out.println("Phần số: " + phanSo.toString()); } }

Kết quả sẽ là:


Không có nhận xét nào:

Đăng nhận xét