当前位置: 代码迷 >> java >> 用引号分隔字符串,重用将参数解析为main的方法
  详细解决方案

用引号分隔字符串,重用将参数解析为main的方法

热度:90   发布时间:2023-07-18 08:55:28.0

在我编写的小程序中,我必须解析一行用户输入。 基本上,需要做的就是按照与main()参数相同的方式将行拆分为字符串数组,即我正在寻找类似的东西:

String[] splitArgs(String cmdLine);

我只是想知道,如果在调用main本身之前以这种方式解析main方法的参数,是否可以调用该方法而不是编写自己的方法? 那么,有人知道在哪里可以找到该方法吗?

谢谢,阿克塞尔

在地球上

命令行参数由外壳解析; 例如,这就是为什么*通常扩展为文件列表的原因。 这称为“ globbing”,它发生在程序之外,甚至在JVM启动之前。

也可以看看

相关问题


关于分割字符串

至于将字符串拆分为字符串数组,最基本的选择是 。

这是一个非常简单的示例:

    String[] parts = "one two three".split(" ");
    for (String part : parts) {
        System.out.println("[" + part + "]");
    }

上面的照片:

[one]
[two]
[three]

splitString参数是一个正则表达式。

参考文献


Scanner选项

您可以使用的另一个选项是 。 这是旧版改进版本。

相关问题

    • 使用知道简单引号的Scanner示例
    • 有关验证数字,元音等的许多示例

番石榴选项

要获得更强大的String拆分功能,可以使用例如Guava的 。

不,解析是由外壳程序或系统库(在Windows上)而不是由Java完成的。 您可以使用ProcessBuilder和sh -c(或Windows上的cmd)。 就像是:

new ProcessBuilder("sh", "-c", "java Program " + cmdLine).start();

我刚刚找到了由Apache Commons exec解决此问题的另一种方法。

public static String[] splitArgsStr(String argsStr) {
    org.apache.commons.exec.CommandLine execCommandLine = new org.apache.commons.exec.CommandLine("sh");
    execCommandLine.addArguments(argsStr, false);
    return execCommandLine.getArguments();
}

最新的Maven依赖项是:

<dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-exec</artifactId>
        <version>1.3</version>
    </dependency>

这种解析通常是由Shell完成的。 因此,您要查找的功能将是一个完全独立的程序的一部分,该程序可能是用C编写的。到Java VM甚至启动时,参数都已被解析。

  相关解决方案