在Java中使用单个String获取所有参数

时间:2013-09-03 23:04:02

标签: java

我需要将整个参数序列作为一个单独的String获取,我使用以下代码,替换逗号和两个方括号。

Arrays.toString(args).replace(",", "").replace("[", "").replace("]", "");

假设我使用以下参数运行它:

  

你好,你是一名程序员,你是个好人

使用Arrays.toString()我得到:

  

[Hello, you're, a, programmer,, you're, a, great, guy]

所以,通过使用我实际得到的.replace()

  

"Hello, you're a programmer, you're a great guy"

我发现上面的代码太乱了,尽管如此。我怎么能只用一种方法减少这样的句子呢?

5 个答案:

答案 0 :(得分:3)

我喜欢Commons Lang的StringUtils#join

join(args);

,或者,如果您需要在各部分之间使用分隔符

join(args, ' ');

但我认为你问的是错误的问题。如果要保留从命令行传入的字符串,则需要在shell中引用它。然后,您将在参数数组中将整个事件作为单个第一个String获取。否则,无法恢复连续的空格:

java -jar MyApp.jar "Hello, you're a programmer, you're a great guy"

答案 1 :(得分:0)

我建议使用StringBuilder。这是有效的,特别是如果您创建具有字符串总长度的实例(检查循环)作为构造函数参数。
有关详情,请查看:http://docs.oracle.com/javase/tutorial/java/data/buffers.html

答案 2 :(得分:0)

字符串数组可以转换为单个字符串,如下所示。

    StringBuilder builder = new StringBuilder();
    for (String str: args)
    {
        builder.append(str);
    }
    System.out.println(builder.toString());

答案 3 :(得分:0)

您是否出于某种原因用逗号分隔字符串然后将它们放入ArrayList?如何,专门回答这个问题而不试图猜测所有不好的事情......

你可以做到取出一个替换但是...... meh。

public static void main(String[] args) {
        ArrayList<String> myArray = new new ArrayList<String>();
        myArray.add("hello");
        myArray.add("I");
        myArray.add("Am");
        myArray.add("Ben");
        myArray.add("!");
        System.out.println(myArray.toString().replaceAll("\\[(.*)\\]", "$1").replaceAll(",", ""));
    }

答案 4 :(得分:0)

你可以

  1. 让使用该程序的人引用该字符串,以便将其作为一个参数传递给您的程序
  2. 修改命令行的工作方式,使其不会将空格解释为参数的分隔符
  3. 修改main(),具体说明参数如何(我不确定这是可行的还是可行的)
  4. 使用行为不同的.toString()编写一个新的数组子类
  5. 使用将数​​组元素连接到字符串
  6. 的方法编写一个新的数组子类
  7. 编写一个静态方法,将数组元素连接到一个字符串并将参数数组传递给它
  8. 最后一项工作可能是最少的工作,特别是如果你不打算多使用它。