Cодержание
Руководство Java StringReader
View more Tutorials:


Класс StringReader используется для чтения String в стиле символьного входного потока (character input stream).

По сути, StringReader - это подкласс Reader. Он имеет только методы, унаследованные от его родительского класса. Таким образом, вы можете прочитать статью о Reader, чтобы узнать больше об этих методах.
StringReader constructor
public StringReader(String s)
Например: Прочитайте текст, перечисляя слова, которые появляются в тексте, и количество вхождений каждого слова.
- 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
Например: Прочитайте текст с несколькими строками, распечатайте строки, которые заканчиваются на "B", и не начинаются на "#" (Строка комментария).
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