gpt4 book ai didi

java - 有没有办法找出传递给 jar 的参数是否被引用?

转载 作者:行者123 更新时间:2023-12-01 14:50:04 26 4
gpt4 key购买 nike

我正在尝试将多个参数传递给我的 Java 应用程序,但我想使用智能解析器自己解析它们,该解析器不仅仅依赖于空格来分隔参数。一个例子:

/update source=foo func=(bar, foo ,foo,bar)

通过将所有内容转换为 token 然后解析它们,这一切都可以很好地工作。但是,当我添加时出现问题:

path="./foo/bar/foo  bar.txt"

(注意 foo 和 bar 之间的双空格)。

当我使用双引号时,参数作为单个字符串传递,保留双空格。引号已被删除,如下所示:

path=./foo/bar/foo  bar.txt

这使我的解析器失败。但是,当我尝试使用其他字符作为引号时,例如 ' ,解析器工作正常,但是 shell 将字符串作为两个单独的字符串传递,以双空格分隔,因此我丢失了那里有两个空格的信息.

如何使用双引号传递参数来保留文字字符串表示形式,同时保留字符串被引用的信息,而用户不必键入像“'string'”这样的奇怪结构?我正在使用 Java,也许有一种方法可以让 shell 解析整行参数?或者只是不删除引号?

顺便说一句,我从微软命令行运行了这个,还没有尝试过unix shell,它甚至可能在我在互联网上读到的单引号上失败

最佳答案

在 Windows 命令行(使用 cmd.exe)上,您可以使用 \" 转义双引号。例如,

java MyApp path=\"./foo/bar/foo bar.txt\"

将导致

args[0] = path="./foo/bar/foo
args[1] = bar.txt"

同时

java MyApp path="\"./foo/bar/foo  bar.txt\""

会给你

args[0] = path="./foo/bar/foo  bar.txt"

关于java - 有没有办法找出传递给 jar 的参数是否被引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981995/

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