openplanning

Hướng dẫn và ví dụ Java StringReader

Xem thêm các chuyên mục:

Hãy theo dõi chúng tôi trên Fanpage để nhận được thông báo mỗi khi có bài viết mới. Facebook

1- StringReader

Lớp StringReader được sử dụng để đọc một String theo phong cách của một luồng đầu vào ký tự (character input stream).
Về cơ bản, StringReader là lớp con của Reader. Nó không có các phương thức nào khác ngoài các phương thức được thừa kế từ lớp cha của nó. Vì vậy bạn có thể đọc bài viết về Reader để tìm hiểu thêm về các phương thức này.
StringReader constructor

public StringReader(String s)

2- Examples

Ví dụ: Đọc một văn bản, liệt kê các chữ xuất hiện trong văn bản và số lần xuất hiện của mỗi chữ.
  • TODO Link?
StringReaderEx2.java

package org.o7planning.stringreader.ex;
 
import java.io.IOException;
import java.io.Reader;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;

public class StringReaderEx2 {

    public static void main(String[] args) throws IOException {
        String s = "Apple Apricots Apricots Blackberries Apple";
        
        Reader reader = new StringReader(s);
        StreamTokenizer tokenizer = new StreamTokenizer(reader); // StreamTokenizer(Reader)
        
        // <String word, int count>
        Map<String, Integer> wordsMap = new HashMap<>();
        
        // Read and count the frequency for every word.
        while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
            if (tokenizer.ttype == StreamTokenizer.TT_WORD) {
                int count;
                 
                if(wordsMap.containsKey(tokenizer.sval)) {
                    count = wordsMap.get(tokenizer.sval).intValue();
                    count++;
                }
                else {
                    count = 1;
                }
                wordsMap.put(tokenizer.sval, count);
            }
        }
        
        wordsMap.forEach((word, count) -> {
            System.out.println(word + " : " + count);
        });
    }
}
Output:

Apple : 2
Apricots : 2
Blackberries : 1
Ví dụ: Đọc một văn bản gồm nhiều dòng, in ra các dòng kết thúc bởi chữ "B", và không bắt đầu bởi chữ "#" (Dòng chú thích).
StringReaderEx3.java

package org.o7planning.stringreader.ex;

import java.io.BufferedReader;
import java.io.Reader;
import java.io.StringReader;

public class StringReaderEx3 {

    public static void main(String[] args) {
        String students = //
                "# Students:\n" //
                        + "John P\n" //
                        + "Sarah M\n" //
                        + "# Sarah B\n" //
                        + "Charles B\n" //
                        + "Mary T\n" //
                        + "Sophia B\n";

        Reader reader = new StringReader(students);

        BufferedReader br = new BufferedReader(reader);

        br.lines() // return java.util.stream.Stream
                .filter(s -> !s.trim().startsWith("#")) // Line not start with #
                .filter(s -> s.endsWith("B")) // Line ends with B
                .forEach(System.out::println);

    }
}
Output:

Charles B
Sophia B

Xem thêm các chuyên mục: