1

我需要将整个参数序列作为一个字符串获取,我正在使用以下代码,替换逗号和两个方括号。

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"

我只是发现上面的代码很乱,尽管它正在工作。我怎样才能只用一种方法减少这样的句子?

4

5 回答 5

3

我喜欢 Commons Lang 的StringUtils#join

join(args);

, 或者,如果您需要零件之间的分隔符

join(args, ' ');

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

java -jar MyApp.jar "Hello, you're a programmer, you're a great guy"
于 2013-09-03T23:12:57.023 回答
0

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

    StringBuilder builder = new StringBuilder();
    for (String str: args)
    {
        builder.append(str);
    }
    System.out.println(builder.toString());
于 2013-09-03T23:22:35.210 回答
0

您是否出于某种原因用逗号分割字符串然后将它们放入 ArrayList 中?无论如何,要专门回答这个问题,而不要试图猜测正在发生的所有坏事......

您可能可以通过替换一个来做到这一点,但是……嗯。

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(",", ""));
    }
于 2013-09-03T23:24:18.880 回答
0

你可以

  1. 让使用程序的人引用字符串,以便将其作为一个参数传递给您的程序
  2. 修改命令行的工作方式,使其不会将空格解释为参数的分隔符
  3. 修改main(),特别是它如何接受参数(我不确定这是可能的或可行的)
  4. .toString()用行为不同的 a 编写一个新的数组子类
  5. 使用将数组元素连接到字符串的方法编写一个新的数组子类
  6. 编写一个将数组元素连接到字符串并将参数数组传递给它的静态方法

最后一个可能是最少的工作,特别是如果您不打算大量使用它。

于 2013-09-03T23:31:27.893 回答
0

我建议使用 StringBuilder。它很有效,特别是如果您使用字符串的总长度(在循环中检查)作为构造函数参数创建实例。
有关更多信息检查:http ://docs.oracle.com/javase/tutorial/java/data/buffers.html

于 2013-09-03T23:10:19.130 回答