Java 为什么Arrays.toString(values.trim()会产生[括号中的文本]?
在没有括号的情况下获取字符串的最佳方法是什么? 如果我这样做:Java 为什么Arrays.toString(values.trim()会产生[括号中的文本]?,java,arrays,tostring,Java,Arrays,Tostring,在没有括号的情况下获取字符串的最佳方法是什么? 如果我这样做: [Georgio] 数组中似乎存在丢失后续值的风险。Java默认的Arrays-toString方法实现就是这样的。 您可以创建一个扩展它的类,专门用于您想要的内容,并覆盖toString方法,使其生成您喜欢的字符串,而无需“[”“]”,并且具有您喜欢和需要的其他限制。我相信这正是数组的实现方式。toString(Object[])的工作原理,至少在太阳上。如果数组有多个元素,您将看到类似于[foo,bar,baz]的内容 您是否
[Georgio]
数组中似乎存在丢失后续值的风险。Java默认的Arrays-toString方法实现就是这样的。
您可以创建一个扩展它的类,专门用于您想要的内容,并覆盖toString方法,使其生成您喜欢的字符串,而无需“[”“]”,并且具有您喜欢和需要的其他限制。我相信这正是
数组的实现方式。toString(Object[])
的工作原理,至少在太阳上。如果数组有多个元素,您将看到类似于[foo,bar,baz]
的内容
您是否希望在没有括号的情况下获得基本相同的输出?例如,
foo、bar、baz
?如果是这样,那么编写您自己的方法应该很容易。如果您想要的输出是一个由逗号(或其他东西)分隔的值列表,
我喜欢以下方法:
String valuesStr=Joiner.on(“,”).join(values)
这只是数组.toString(Object[])
方法应用的默认格式。如果要跳过括号,可以自己构建字符串,例如:
String valuesStr = values[0].trim();
公共静态字符串到字符串(对象[]值)
{
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
我建议您使用字符串生成器或guava's joiner,但如果您需要快速修复,可以尝试以下方法:
public static String toString(Object[] values)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i < values.length; i++)
{
if (i != 0)
sb.append(", ");
sb.append(values[i].toString());
}
return sb.toString();
}
注意:仅当值本身不包含括号时,才使用上述方法
StringBuilder实现:
Arrays.toString(values).split("[\\[\\]]")[1];
static String toString(Object ... strings)
{
if(strings.length==0)
return "";
StringBuilder sb=new StringBuilder();
int last=strings.length-1;
for(int i=0;i<last;i++)
sb.append(strings[i]).append(",");
sb.append(strings[last]);
return sb.toString();
}
从技术上讲,您无法扩展
java.util.Arrays
,因为它没有公共(或受保护)构造函数。而且,由于这些方法是静态的,所以这样做没有任何意义。您是非常正确的。我道歉。即使再看一眼代码,很明显它是静态的,因为调用toString方法的方式是静态的。然后,他应该在任何类中创建另一个静态方法,以自定义方式处理字符串向量需要双引号字符。如果值本身包含括号呢?如果StringBuilder
的示例代码objs.length==0
将中断。请参阅我对同一问题的回答,以获得正确处理此问题的解决方案。第二次调用toString
数组是否有任何原因。toString(values)。toString()。split(…)?@Grodriguez:不,这是我的错误。请更正它。
static String toString(Object ... strings)
{
if(strings.length==0)
return "";
StringBuilder sb=new StringBuilder();
int last=strings.length-1;
for(int i=0;i<last;i++)
sb.append(strings[i]).append(",");
sb.append(strings[last]);
return sb.toString();
}
String s=(s=Arrays.toString(arr)).substring(1,s.length()-1);