如何将Java字符串拆分为数组并在没有分隔符的情况下打印生成的数组内容

时间:2015-06-22 18:12:42

标签: java arrays string split stringbuilder

我从SQL查询结果集生成StringBuilder

StringBuilder sb = new StringBuilder();
PreparedStatement ps1 = null;
String[] systems = null;

try {
    ps1 = c.prepareStatement(systemNames);
    ResultSet rs = ps1.executeQuery();
    while (rs.next()) {
        sb.append(rs.getString("system_name") + ",");
        System.out.println(">-------------------->>> " + sb.toString());
    }
    systems = sb.toString().split(",");
} catch (SQLException e) {
    log.error(e.toString(), e);
} finally {
    if (ps1 != null) {
        try {
            ps1.close();
        } catch (Exception e) {
        }
    }
    if (c != null) {
        try {
            c.close();
        } catch (Exception e) {
        }
    }
}
System.out.println(">-------------------->>> " + systems.toString());

我感到困惑的是它在split之后打印的字符串对象,第一个打印语句打印出来:

  

> -------------------->>> ACTIVE_DIRECTORY,

而第二个,在分娩后分裂:

  

> -------------------->>> [Ljava.lang.String; @ 387f6ec7

如何在ACTIVE_DIECTORY之后不使用逗号打印split

3 个答案:

答案 0 :(得分:3)

它打印出逗号,因为你附加了它。 只需打印出你的数组(系统变量):

Arrays.toString(systems);

答案 1 :(得分:2)

请务必查看有关Arrays实用程序类方法Arrays.toString(Object[] o)的oracle文档。这将“漂亮地”打印数组的内容,而不是内存地址。

此外,最后一个元素每次都会有一个逗号,因为您要附加它。要解决这个问题,你可以这样做:

myString = myString.replaceAll(",", "");

myString[myString.length - 1] = myString[myString.length - 1].replaceAll(",", "");

取决于您是否要在split(",");之前或之后删除逗号。在最后一个元素上执行此操作将从字符串中取出逗号。我之后推荐,因为之前这样做会让你的分裂不起作用!

或者,您可以执行replaceAll(",", " ");然后split(" ");,但是您也可以在开头时添加空格而不是逗号。

答案 2 :(得分:1)

尝试更换:

System.out.println(">-------------------->>> " systems.toString());

System.out.println(">-------------------->>> " systems[0]);

因为String []系统是一个对象的数组,所以它会打印哈希。