[英]How to use the indexOf() in the commandline arguments?
如何檢查以下命令行參數- 庫存make =本田desc by_count total-是否具有make =?
我已經創建了String [] savedArgs,所以我將所有參數傳遞給該數組,但是數組沒有indexOf(),所以我現在有點迷路了...
我希望能夠在命令行參數中查找make = ,以便可以根據汽車制造商使用適當的方法來顯示列表。 我所能做的就是使用contains()查找完全匹配的內容(例如: make = Honda或make = BMW ),但是這樣,我將重復相同的代碼很多次,並且我認為這是錯誤的設計。
提前致謝
如果要自己處理輸入參數,則可以檢查每個參數是否包含參數名稱的子字符串('make ='),然后拆分字符串:
String make = "";
for (String arg : savedArgs) {
if (arg.contains("make=")) {
make = arg.split("make=")[1];
}
}
根據需要對每個參數重復此操作。
更好的解決方案可能是使用Apache Commons CLI 。
沒有內置的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
}
當然,以最適合您的特定情況的方式進行操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.