特定の条件を満たす文字が現れる直前にReader
から文字列を読みたいと思います。それが動作特定の文字の前に文字列を読み取る方法
private boolean isSatisfying(int codePoint) {
return codePoint == '@' || codePoint == '$'; // for example
}
public String read(Reader reader) {
StringBuilder result = new StringBuilder();
for (int codePoint = -1 ; (codePoint = reader.read()) != -1 ;) {
if (isSatisfying(codePoint)) {
break;
}
result.appendCodePoint(codePoint);
}
return result.toString();
}
が、read()
を実行した後reader
のポインタが条件を満たすキャラクタ(上記の例で@
又は$
)、ない結果の文字列の末尾にある:私は、次のコードを試してみました。
reader
のポインターを結果ストリングの最後に残したいが、Reader
というポインターを戻す方法はありません。 それを達成する良い方法はありますか?
public String read(Reader reader) {
StringBuilder result = new StringBuilder();
for (int codePoint = -1 ; codePoint ;) {
if (isSatisfying(codePoint)) {
break;
}
result.appendCodePoint(codePoint);
codePoint = reader.read()) != -1;
}
return result.toString();
}
この作業で不運なことはありますか? – 0xDEFACED