gpt4 book ai didi

java - 像 Linux 终端一样分割字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:15:02 24 4
gpt4 key购买 nike

我有一个类似 'abc\'abc\' "123"12\\'3' 的字符串。

我想要做的是像 Unix 终端一样解析它。有没有办法在不处理复杂的正则表达式的情况下做到这一点?

示例:java -jar foo.jar abc 'abc' "123"12\'3

将成为这个字符串数组["abc","abc","123","12'3"]

Java 中是否内置有任何类型的库/功能可以让我执行此操作?

最佳答案

您可以编写自己的解析器(为了简化,我建议您使用 Guava 及其 CharMatcher 来匹配字符)或使用现有的解析器库。我个人最喜欢的是Parboiled因为您可以用 Java 编写语法。

例如,这个非常粗略的语法分成只包含字母的单词(但请注意,我的半熟福有点生疏):

Rule Spaces()
{
return OneOrMore(AnyOf(" \t"));
}

Rule Letter()
{
return Range('a', 'z');
}

Rule Word()
{
return OneOrMore(IgnoreCase(Letter());
}

Rule OneLine()
{
// EOI == End Of Input
return Sequence(Optional(Spaces()), Word(),
ZeroOrMore(Sequence(Spaces(), Word()), EOI);
}

有一个堆栈,您可以将值插入等,以便最终获得所有字符串的列表。

关于java - 像 Linux 终端一样分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16946783/

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