没有内置的indexOf
或类似的方法,可以为你想要的开箱即用。一个选项是这样的:
final String makeArgPrefix = "make=";
Optional<String> makeArg = Stream.of(args)
.filter(arg -> arg.startsWith(makeArgPrefix))
.findAny();
makeArg.ifPresent(arg -> System.out.println(arg.substring(makeArgPrefix.length())));
这需要Java 8,因为我使用的是流。在命令行参数make=Honda
这个打印
Honda
它没有考虑到一个以上的命令行参数可与name=
开始。它可以根据您的确切要求进行改进。
允许我添加命令行参数的标准解释,从左到右处理它们(如果不想忽略某些内容,则是明智的做法)。像
for (String arg : args) {
if (arg.equals("desc") {
ascending = false;
} else if (arg.startsWith(makeArgPrefix) {
make = arg.substring(makeArgPrefix.length());
} else if // and so on
}
当然,这样做是最适合您的特定情况的方式。
既然你有一个字符串数组,你可以迭代该数组并检查每个单独的字符串 - 在那里你有你需要的所有方法,比如'matches()','indexOf'等。或者你可以使用像cli库一样[Apache Commons CLI](https://commons.apache.org/proper/commons-cli/)可以更轻松地处理命令行。 – Thomas