使用正则表达式删除逗号和空格并将它们分成不同的变量

时间:2016-11-15 23:36:10

标签: java arrays regex string command-line-arguments

有没有有效的方法呢?

我想将arg传递给命令行并将它们分成以下内容:

  1. String []命令
  2. String [] word
  3. String [] fileName
  4. 示例:

    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(“”)并一次又一次地划分到不高效的不同字符串数组。

1 个答案:

答案 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);
    }
}

一旦你按类型分割了所有参数,你就可以轻松地用它们做任何你想做的事情,或者根据你的意愿重新排列它们。这比正则表达式更有效。