簡體   English   中英

如何在命令行參數中使用indexOf()?

[英]How to use the indexOf() in the commandline arguments?

如何檢查以下命令行參數- 庫存make =本田desc by_count total-是否具有make =?

我已經創建了String [] savedArgs,所以我將所有參數傳遞給該數組,但是數組沒有indexOf(),所以我現在有點迷路了...

我希望能夠在命令行參數中查找make = ,以便可以根據汽車制造商使用適當的方法來顯示列表。 我所能做的就是使用contains()查找完全匹配的內容(例如: make = Hondamake = 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM