Java 如何从文件中获取除以#开头的行以外的行,仅使用cactoos
任务是仅使用cactoos库从文件中获取除以#开头的行以外的所有行。 我得到了以下解决方案:Java 如何从文件中获取除以#开头的行以外的行,仅使用cactoos,java,oop,cactoos,Java,Oop,Cactoos,任务是仅使用cactoos库从文件中获取除以#开头的行以外的所有行。 我得到了以下解决方案: Iterable<Text> data = new Filtered( (Func<Text, Boolean>) text -> !text.asString().startsWith("#"), new Split(
Iterable<Text> data =
new Filtered(
(Func<Text, Boolean>) text -> !text.asString().startsWith("#"),
new Split(
new TextOf(file),
new TextOf("\\n")
)
);
是否可以仅使用cactoos库类执行此操作
您喜欢哪种解决方案?
StartsWith
已存在于cactoos中,尽管它是Scalar
新过滤(
新分裂(
新文本(文件),
新文本(“[\r\n]+”)
),
x->new Not(新的StartsWith(x,new TextOf(“#”))
)
import org.cactoos.Scalar;
import org.cactoos.Text;
import org.cactoos.text.TextOf;
public final class StartsWith implements Scalar<Boolean> {
private final Text origin;
private final Text prefix;
public StartsWith(String origin, String prefix) {
this(new TextOf(origin), new TextOf(prefix));
}
public StartsWith(Text origin, Text prefix) {
this.origin = origin;
this.prefix = prefix;
}
@Override
public Boolean value() throws Exception {
return origin.asString().startsWith(prefix.asString());
}
}
new Filtered<>(
new Split(
new TextOf(file),
new TextOf("[\r\n]+")
),
x -> new Not(new StartsWith(x, new TextOf("#")))
)