"foo", "bar", "baz" 这可以正常工作。 -6ren">
gpt4 book ai didi

java - Guava:Splitter 并考虑转义?

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:26 25 4
gpt4 key购买 nike

我对 Guava 的 split 可能性很感兴趣:

Splitter.on("|").split("foo|bar|baz");
// => "foo", "bar", "baz"

这可以正常工作。

如果我想在“|”上拆分怎么办但不在“[”和“]”之间:

Splitter.on(something).split("foo|ba[r|ba]z");
// => "foo", "ba[r|ba]z"

据我所知,不可能在 Guava 中定义这个“东西”。

我发现了这个: Issue 799: Add google escape library to Guava .这有关系吗?

最佳答案

处理这个问题的正确方法是制作一个解析器。现在真的很容易,只需使用解析器组合器,例如 JParsec。你会得到这样的东西:

class ParserFactory {

Parser escapedSequence() {
return Parsers.between(Scanners.string("["),
Scanners.anyCharacterButNot("]"), Scanners.string("]"));
}

Parser chunk() {
return Parsers.or(escapedSequence(), Scanners.anyCharacterButNot("|"));
}

Parsers wholeThing() {
return Parsers.separatedBy(chunk().plus(), Scanners.string("|"));
}
}

关于java - Guava:Splitter 并考虑转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10755365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com