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

删除java数组中的特殊字符[],java,arrays,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&l

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

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
只需使用:


根据大众的需求,我将添加一个解释,解释为什么首先要得到一个带括号的字符串。当你写这样的东西时

shuffled + "\n"
这被转换为

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

只需使用:


根据大众的需求,我将添加一个解释,解释为什么首先要得到一个带括号的字符串。当你写这样的东西时

shuffled + "\n"
这被转换为

new StringBuilder().append(shuffled).append("\n")
是一个为字符串连接和操作而设计的类。当您附加一个对象时(
shuffled
,在本例中),将附加该对象的
toString()
方法返回的字符串。现在,shuffled是一个
ArrayList
,它使用
AbstractCollection
中定义的
toString()
方法。您可以从中看到,
toString()
将返回一个字符串,格式为
[e1,e2,…,en]
(其中每个
ei
都是集合的一个元素)。当然,
“\n”
是一个换行符,不会直接可见。

当您这样做时:

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";
String s=”“;
for(int i=0;i0)s+=“,”;//添加分隔符
s+=shuffled.get(i);//添加列表项
}
返回s+“\n”;
当您执行以下操作时:

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";
String s=”“;
for(int i=0;i0)s+=“,”;//添加分隔符
s+=shuffled.get(i);//添加列表项
}
返回s+“\n”;

括号来自ArrayList对
toString()的实现。
(正如强蒂帕克所说)

只需使用以下命令删除字符串的第一个和最后一个字符

返回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";    
}
公共静态字符串sfuffle()
{
List shuffled=newarraylist(Arrays.asList(phraseString));
收藏。洗牌(洗牌);

String str=shuffled.toString(); str=str.substring(1,str.length()-1);//此行删除括号 System.out.println(str);//用于调试 返回str+“\n”; }

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

括号来自ArrayList的
toString()实现
(正如强蒂帕克所说)

只需使用以下命令删除字符串的第一个和最后一个字符

返回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";    
}
公共静态字符串sfuffle()
{
List shuffled=newarraylist(Arrays.asList(phraseString));
收藏。洗牌(洗牌);

String str=shuffled.toString(); str=str.substring(1,str.length()-1);//此行删除括号 System.out.println(str);//用于调试 返回str+“\n”; }


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

这解决了这一问题,但没有解释发生了什么,或者如何做得更好。@可能是因为OP没有询问发生了什么,这里的否决票似乎太多了。我不知道你所说的“如何做得更好”是什么意思,我想不出比这更简单的方法了。+1给出了一个令人惊讶的简单答案,尽管快速解释一下toString方法不会有什么坏处:)@mightyport我添加了一些解释。String str=shuffled.toString();返回str.substring(1,str.length()-1)+“\n”;谢谢arshajii,这解决了我的问题这解决了一个案例,但没有解释发生了什么,或者如何做得更好。@maghtypock OP没有问发生了什么,这里的否决票似乎太多了。我不知道你所说的“如何做得更好”是什么意思,我想不出比这更简单的方法了。+1给出了一个令人惊讶的简单答案,尽管快速解释一下toString方法不会有什么坏处:)@mightyport我添加了一些解释。String str=shuffled.toString();返回str.substring(1,str.length()-1)+“\n”;谢谢arshajii这解决了我的问题你说的“出局”是什么意思?你在控制台上看到了什么?返回值是多少?或者两者都要?@PhilippSander显然返回值-System.out只是为了调试。@MightyWork,为什么你确定他不想要两者?我从评论中假设:
//添加只是为了得到输出
@MightyWork所以:op将控制台输出视为输出,而不是返回值,因为你正在计算什么你是说出去?你在控制台上看到了什么?返回值是多少?或者两者都有?@PhilippSander显然返回值-System.out仅用于调试。@MightyWork,为什么oyu确定他不想要两者?我假设