有什么有效的方法吗?
我想将参数传递给命令行并将它们划分为以下内容:
- <
- String[]命令/gh><
- String[]词/gh><
- String[]文件名/gh>
例子:
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
"——"每次都在文件名之间。
我已经完成了下面的代码,这是不有效的。使用字符串。分割(" ")并一次又一次地分割成不同的字符串数组,这是不高效的
我从来都不理解为什么要在这样简单的事情上使用正则表达式。为什么不直接创建三个列表并循环遍历参数,同时将它们拆分为正确的列表呢?
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);
}
}
一旦你把所有的参数按类型分开,你就可以很容易地对它们做任何你想做的事情,或者根据你的意愿重新排列它们。这也比正则表达式更有效。