为什么Arrays.toString(values).trim()会生成[括号内的文本]?

faq*_*faq 3 java arrays tostring

Map<String, String[]> map = request.getParameterMap();
for (Entry<String, String[]> entry : map.entrySet())
{
    String name = entry.getKey();
    String[] values = entry.getValue();
    String valuesStr = Arrays.toString(values).trim();
    LOGGER.warn(valuesStr);
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用上面的代码查看请求参数值.

为什么Arrays.toString(values).trim();括号参数值所以它看起来像这样:

[Georgio]
Run Code Online (Sandbox Code Playgroud)

在没有括号的情况下获取字符串的最佳方法是什么?

如果我这样做:

String valuesStr = values[0].trim();
Run Code Online (Sandbox Code Playgroud)

似乎存在丢失数组中后续值的风险.

Gro*_*uez 8

这只是该Arrays.toString(Object[])方法应用的默认格式.如果要跳过括号,可以自己构建字符串,例如:

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 你应该使用`StringBuilder`(非同步)而不是`StringBuffer`(synchronized). (5认同)
  • 我认为`sb.append(',');`需要双引号字符. (2认同)

smo*_*ola 5

如果你想要的输出是用逗号(或其他东西)分隔的值列表,我喜欢用Guava的Joiner方法:

String valuesStr = Joiner.on(",").join(values)