有没有有效的方法呢?
我想将arg传递给命令行并将它们分成以下内容:
示例:
String[] arg = {"-b", "-f", "-i", "Dog", "Cat", "--", "fileName1.txt", "fileName2.txt", "fileName3.txt"};
Main.main(arg);
String[] arg = {"-f", "-i", "Hi", "Hello", "--", "fileName1.txt", "fileName2.txt"};
Main.main(arg);
String[] arg = {"-i", "Hi", "Hello", "--", "fileName2.txt"};
Main.main(arg);
注意:
Syntax: "[-b] [-f] [-l] [-i] <from> <to> -- " + "fileName"
在语法 - 命令中,word - fileName
“ - ”每次都会介于两者和文件名之间。
我已经完成了以下无效的代码。使用String.split(“”)并一次又一次地划分到不高效的不同字符串数组。
答案 0 :(得分:1)
我从不理解为这样的简单事情使用正则表达式的愿望。为什么不创建三个列表并循环遍历参数,同时将它们分成右列表?
ArrayList<String> flags = new ArrayList<>();
ArrayList<String> words = new ArrayList<>();
ArrayList<String> files = new ArrayList<>();
for (String arg : args) {
if (arg.equals("--")) {
continue;
}
if (arg.contains(".")) {
files.add(arg);
}else if (arg.contains("-")) {
flags.add(arg);
}else {
words.add(arg);
}
}
一旦你按类型分割了所有参数,你就可以轻松地用它们做任何你想做的事情,或者根据你的意愿重新排列它们。这比正则表达式更有效。