且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

番石榴:Splitter并考虑逃离?

更新时间:2023-01-15 11:44:06

处理此问题的正确方法是创建解析器。现在真的很简单,只需使用解析器组合器,例如JParsec。你会得到这样的结果:

The proper way to deal with this is to make a parser. It's really easy nowadays, just use a parser combinator, such as JParsec. You'll get something like this:

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("|"));
    }
}