Java按原样打印一个巨大的字符串数组

标签 java string delimiter

有一个字符串数组,row[],我想在它们之间放置分隔符。我想保留顺序,例如如果

row[0] was "Gold",
row[1] was "Costly", 
row[2] was NULL,
row[3] was NULL, 
row[5] was "Bronze", 
row[6] was "Cheaper", 

当我在字符串数组中放置分隔符(例如\t)时,我想保留 NULL 值。所以我的新字符串应该看起来像

'Gold \t Costly \t \t Bronze \t Cheaper'. 

我可以做类似的事情

'System.out.println(row[0] + "\t" + row[1] +"\t" +row[2]+.......' 

但问题是字符串数组的长度超过120。有一个更好的方法吗? (我不能使用 for 循环,因为我把它和其他东西一起放在映射器中)。如果是String.format(),能告诉我怎么做吗?

最佳答案

标准 API 中没有任何相关内容。有几个第三方软件包具有“join”方法,可以执行您想要的操作(还有一些)。 Guava 的 Joiner 是一个特别好的。 。 (根据 Tim 的评论,StringUtils.join() 库中的 Apache Commons Lang 方法也可以满足您所需的一切。)使用良好的第三方库可以解决很多此类编码问题。

如果您不想(或不允许)使用第三方库,您可以编写一个方法来使用您选择的分隔符连接元素:

public static String join(String[] data, String delimiter) {
    StringBuilder sb = new StringBuilder();
    if (data != null && data.length > 0) {
        for (String item : data) {
            sb.append(String.valueOf(item);
            sb.append(delimiter);
        }
        // chop off the last delimiter
        sb.setLength(sb.length() - delimiter.length());
    }
    return sb.toString();
}

然后,您可以在要使用字符串连接表达式的任何地方使用 join()。例如:

System.out.println(join(row, "\t"));

关于Java按原样打印一个巨大的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17938334/

相关文章:

java - IntelliJ——显示类结构……不同类的

c - 当我分配了足够的内存时,为什么会得到 "segmentation fault 11"?

c - 如何将 char[] 数组转换为 char*

mysql - MySQL 中的分隔符

java - 使用stringbuilder和bufferedreader读取多个链接

c++ getline 分隔符为任意数字?

java - 不可变对象(immutable对象)不会使用带有模块的 Java 9 生成代码

java - Epson TM-T70 Java打印

python - 在 Python 中将数组转换为 CSV/TSV 格式的字符串

java - 从Java中的mimepart获取图像的base64内容字符串