在Java中获取单个字符串中的所有参数

在Java中获取单个字符串中的所有参数,java,Java,我需要获取整个参数序列作为一个字符串,我使用以下代码,替换逗号和两个方括号 Arrays.toString(args).replace(",", "").replace("[", "").replace("]", ""); 假设我使用以下参数运行它: 你好,你是个程序员,你是个很棒的人 通过使用Arrays.toString()我得到: [你好,你是一个程序员,你是一个很棒的家伙] 因此,通过使用.replace()我实际上得到: “你好,你是一名程序员,你是一个很棒的人” 我只是觉得上面的代

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

Arrays.toString(args).replace(",", "").replace("[", "").replace("]", "");
假设我使用以下参数运行它:

你好,你是个程序员,你是个很棒的人

通过使用
Arrays.toString()
我得到:

[你好,你是一个程序员,你是一个很棒的家伙]

因此,通过使用
.replace()
我实际上得到:

“你好,你是一名程序员,你是一个很棒的人”


我只是觉得上面的代码太乱了,即使它还在工作。我怎样才能只用一种方法来减少这样的句子呢

我建议使用StringBuilder。它非常有效,尤其是当您使用字符串的总长度(在循环中检查)作为构造函数参数创建实例时。
有关更多信息,请查看:

我喜欢Commons Lang的:

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

join(args, ' ');

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

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

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

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

您是否出于某种原因将字符串按逗号拆分,然后将其放入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(",", ""));
    }
publicstaticvoidmain(字符串[]args){
ArrayList myArray=新建ArrayList();
myArray.add(“hello”);
myArray.add(“I”);
myArray.add(“Am”);
myArray.add(“Ben”);
myArray.add(“!”);
System.out.println(myArray.toString().replaceAll(“\\[(.*)\\]”,“$1”).replaceAll(“,”,”);
}
你可以

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

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

    args的可能值是什么?我无法理解与CLASSPATH和RMI的连接。
    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(",", ""));
        }