Mục lục
Đôi khi làm việc với String trong Java chúng ta có nhu cầu đếm số lượng khoảng trắng xuất hiện trong một chuỗi. Có rất nhiều cách để thực hiện điều này, qua bài biết này chúng ta sẽ cùng nhau tìm hiểu một số cách thường xuyên được sử dụng.
Sử dụng vòng lặp
Đây là cách đơn giản và hoạt động tốt kể cả trên các phiên bản Java cũ. Chúng ta sẽ dùng vòng lặp để duyệt qua tất cả các ký tự trong String. So sánh từng ký tự một, nếu là khoảng trắng thì sẽ cộng biến count lên 1.
int countString(String input) { int spaceCount = 0; for (char c : input.toCharArray()) { if (c == ' ') { spaceCount++; } } return spaceCount; }
Java Stream API
Stream API được giới thiệu từ phiên bản Java 8 với rất nhiều các tính năng hữu ích giúp cho việc lập trình trở nên đơn giản hơn.
Ngoài ra, kể từ Java 9, một phương thức chars() mới đã được thêm vào class String để chuyển đổi các giá trị char từ String thành một IntStream instance.
int countString(String input) { long spaceCount = input.chars().filter(c -> c == (int) ' ').count(); return spaceCount; }
Sử dụng Matcher.find()
Biểu thức chính quy (Regex) là một vũ khí mạnh mẽ khác để tìm kiếm String trong Java. Do đó, chúng ta có thể xem khoảng trắng như là một pattern và sử dụng phương thức Matcher.find() để kiểm tra xem có bao nhiêu khoảng trắng có trong String.
int countString(String input) { Pattern pattern = Pattern.compile(" "); Matcher matcher = pattern.matcher(input); int spaceCount = 0; while (matcher.find()) { spaceCount++; } return spaceCount; }
Sử dụng String.replaceAll()
Chiến thuật đếm số lượng khoảng trắng sử dụng replaceAll() đó là chúng ta sẽ dùng nó để thay đổi tất cả các ký tự không phải là khoảng trắng thành ký tự rỗng. Bây giờ String chỉ còn lại các ký tự khoảng trắng, chúng ta chỉ cần lấy length() là có kết quả.
int countString(String input) { return input.replaceAll("[^ ]", "").length(); }
Sử dụng String.split()
Method String.split() dùng để tách chuỗi theo pattern nhất định. Do đó chúng ta có thể dùng hàm này để tách chuỗi theo một ký tự khoảng trắng. Sau đó hàm này trả về một mảng array chứa các chuỗi con sau khi đã bị tách và số lượng ký tự khoảng trắng sẽ bằng array.size – 1.
int countString(String input) { return input.split(" ").length - 1;; }
Apache Commons Lang 3
Ngoài các cách trên thì nếu dự án của các bạn đang sử dụng các thư viện bên ngoài như Apache commons Lang 3 thì nó cũng cung cấp một số hàm utils giúp chúng ta đếm ký tự khoảng trắng một cách ngắn gọn và đơn giản hơn.
Để sử dụng Apache commons Lang 3 trong project maven thì chúng ta có thể thêm dependency sau
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
Trong thư viện này, chúng ta sẽ sử dụng StringUtils.countMatches() để đếm ký tự khoảng trắng chứa trong String.
int countString(String input) { return StringUtils.countMatches(input, " "); }
Spring Framework
Ngoài ra, nếu đang phát triển một ứng dụng web sử dụng Spring framework thì chúng ta có thể sử dụng StringUtils.countOccurrencesOf() được cung cấp chính thức bởi Spring.
int countString(String input) { return StringUtils.countOccurrencesOf(INPUT_STRING, " "); }
Tóm lược
Qua đây chúng ta có thể thấy có rất nhiều cách để đếm số lượng khoảng trắng trong một String. Mỗi cách có một ưu điểm riêng của mình. Nên các bạn có thể lựa chọn cách nào mà bản thân thấy phù hợp nhất.
Nguồn