问题描述
在我编写的小程序中,我必须解析一行用户输入。 基本上,需要做的就是按照与main()参数相同的方式将行拆分为字符串数组,即我正在寻找类似的东西:
String[] splitArgs(String cmdLine);
我只是想知道,如果在调用main本身之前以这种方式解析main方法的参数,是否可以调用该方法而不是编写自己的方法? 那么,有人知道在哪里可以找到该方法吗?
谢谢,阿克塞尔
1楼
在地球上
命令行参数由外壳解析;
例如,这就是为什么*
通常扩展为文件列表的原因。
这称为“ globbing”,它发生在程序之外,甚至在JVM启动之前。
也可以看看
相关问题
关于分割字符串
至于将字符串拆分为字符串数组,最基本的选择是 。
这是一个非常简单的示例:
String[] parts = "one two three".split(" ");
for (String part : parts) {
System.out.println("[" + part + "]");
}
上面的照片:
[one]
[two]
[three]
要split
的String
参数是一个正则表达式。
参考文献
Scanner
选项
您可以使用的另一个选项是 。 这是旧版改进版本。
相关问题
-
-
使用知道简单引号的
Scanner
示例
-
使用知道简单引号的
-
- 有关验证数字,元音等的许多示例
番石榴选项
要获得更强大的String
拆分功能,可以使用例如Guava的 。
2楼
不,解析是由外壳程序或系统库(在Windows上)而不是由Java完成的。 您可以使用ProcessBuilder和sh -c(或Windows上的cmd)。 就像是:
new ProcessBuilder("sh", "-c", "java Program " + cmdLine).start();
3楼
我刚刚找到了由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>
4楼
这种解析通常是由Shell完成的。 因此,您要查找的功能将是一个完全独立的程序的一部分,该程序可能是用C编写的。到Java VM甚至启动时,参数都已被解析。