删除数组java中的特殊字符[]

时间:2013-08-07 14:50:14

标签: java arrays

在我的程序中,我有以下字符串数组,当我处理程序时,输出具有方括号[],但我需要没有方括号[]。有关如何删除它们的任何建议吗?

private final static String[] l0 = {"az","Fh md Br", "Inr Gt Cn", "Bl Gs he St st", "Mae is a nw Get", "Pam is a Ml rm", "Comr lab Pl Mt hs", "za"};

public static String sfuffle()
{
List<String> shuffled = new ArrayList<String>(Arrays.asList(phraseString));
    Collections.shuffle( shuffled );
    System.out.println(shuffled);// added only to have the output
    return  shuffled + "\n";    
}

输出:

[az, Mae is a nw Get, Bl Gs he St st, Fh md Br, za, Comr lab Pl Mt hs, Inr Gt Cn, Pam is a Ml rm]

我想要的输出是:

az, Mae is a nw Get, Bl Gs he St st, Fh md Br, za, Comr lab Pl Mt hs, Inr Gt Cn, Pam is a Ml rm

3 个答案:

答案 0 :(得分:3)

只需使用substring()

String str = shuffled.toString();
return str.substring(1, str.length() - 1) + "\n";

根据大众的需求,我会首先解释为什么你会得到一个带括号的字符串。当你写像

这样的东西
shuffled + "\n"

这转换为

new StringBuilder().append(shuffled).append("\n")

StringBuilder是一个专为字符串连接和操作而设计的类。附加对象(在本例中为shuffled)时,将追加对象的toString()方法返回的字符串。现在,混洗是ArrayList,并使用toString()中定义的AbstractCollection方法。您可以在documentation中看到toString()将返回[e1, e2, ..., en]形式的字符串(其中每个ei是该集合的元素)。当然,"\n"是换行符,不会直接显示。

答案 1 :(得分:2)

当你这样做时:

return  shuffled + "\n";

你实际上是这样做的:

return  shuffled.toString() + "\n";

括号来自ArrayList toString()的实现。


使用for循环,您可以按照自己的方式构建字符串,而不依赖于toString()实现:

String s = "";
for(int i = 0; i < shuffled.size(); i++) {
    if(i > 0) s += ", "; // add the separator
    s += shuffled.get(i); // add list item
}
return s + "\n";

答案 2 :(得分:1)

括号来自ArrayList的toString()实现 (就像MightyPork所说的那样)

只需使用

删除字符串的第一个和最后一个字符

return str.substring(1, str.length() - 1) + "\n";

所以你的方法看起来像这样:

public static String sfuffle()
{
    List<String> shuffled = new ArrayList<String>(Arrays.asList(phraseString));
    Collections.shuffle( shuffled );
    String str = shuffled.toString();
    str = str.substring(1, str.length() - 1); //this line removes the brackets
    System.out.println(str); //for debugging
    return  str + "\n";    
}

它将打印没有括号的列表,并将不带括号返回