Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Arrays.toString(values.trim()会产生[括号中的文本]?_Java_Arrays_Tostring - Fatal编程技术网

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);