在我的程序中,我有以下字符串数组,当我处理程序时,输出具有方括号[],但我需要没有方括号[]。有关如何删除它们的任何建议吗?
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
答案 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";
}
它将打印没有括号的列表,并将不带括号返回