我需要将整个参数序列作为一个单独的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"
我发现上面的代码太乱了,尽管如此。我怎么能只用一种方法减少这样的句子呢?
答案 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)
你可以
main()
,具体说明参数如何(我不确定这是可行的还是可行的).toString()
编写一个新的数组子类最后一项工作可能是最少的工作,特别是如果你不打算多使用它。