想在Java中进行一个不会自动解析命令行上使用的参数的应用程序.目前,java要求public static void main(string[])作为入口点签名.我想要一个我自己解析的字符串.这可以完成吗?
这是一个例子:
java MyProgram Hello World
我希望它能在Hello World不需要围绕该字符串的引号的情况下给我.我甚至会满足于java给我全部java MyProgram Hello World.我认为这是Java之外的东西,而且与shell有很大关系.
你对shell部分是正确的.假设您使用的是Unix,那么您的Unix shell会将您的输入字符串拆分为空白,然后将每个部分作为输入到"main"的数组中的元素返回.将所有内容作为单个字符串输入的唯一方法是像这样引用它(你说你不想要):
java MyProgram 'Hello World'
如果您不想这样做,最简单的方法就是将它们重新组合成一个字符串:
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for(String s : args) {
sb.append(s);
sb.append(" "); //some length of whitespace
}
String yourString = sb.toString().trim();
}
Run Code Online (Sandbox Code Playgroud)
这里真正的问题是,如果你试图避免引用并且自己重新组合输入字符串,那么你将失去每个单词之间的空白量.如果重新组合,则以下所有命令行:
java MyProgram Hello World
java MyProgram Hello World
java MyProgram Hello World
Run Code Online (Sandbox Code Playgroud)
仍然会在你的程序中显示为"Hello World".