如何在编写输出文件时将2D数组行转换为制表符分隔的字符串

时间:2014-03-24 08:07:02

标签: java arrays text-files bufferedwriter

我有一个对象,我正在写一个输出文件。

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("output.txt"));        
            bufferedWriter.write("Id"+"\t"+"Symbol"+"\t"+ Arrays.toString(data.symbols));
            bufferedWriter.write("\n");
            for (int i = 0; i < data.cIds.length; i++) {
                bufferedWriter.write(data.ids[i]+"\t"+data.iSymbols[i]+"\t"
                        +Arrays.toString(data.matData[i])+"\n");

我在输出文件中得到一个表:

Id  Symbol  [001, 002, 003, 004, 005]
#1  a01 [2.3, 5.5, 4.5, 1.2, 3.3]
#2  a02 [2.2, 4.5, 7.5, 6.2, 9.3]

......等等。 如何显示没有括号的数组和以制表符分隔的字符串,以便输出如下:

Id  Symbol  001  002  003  004  005
#1   a01    2.3, 5.5, 4.5, 1.2  3.3
#2   a02    2.2  4.5  7.5  6.2  9.3

3 个答案:

答案 0 :(得分:2)

您可以实现自己的toString方法,该方法返回制表符分隔的字符串

类似

public static String toString(Object[] array)
{
  StringBuilder builder = new StringBuilder();


for(Object o: array)
  {
    builder.append(o+"\t");
  }
  return builder.toString().trim();

}

答案 1 :(得分:1)

用此替换&#39; [,]&#39; ,

Arrays.toString(data.matData[i]).replaceAll("[\\[ | \\]]", "")

答案 2 :(得分:0)

使用Guava看起来很简单:

Double[][] data = {
        { 2.3, 5.5, 4.5, 1.2,  3.3 },
        { 2.2,  4.5,  7.5,  6.2,  9.3 }};

for (int row=0; row<data.length; row++) {
    System.out.println(Joiner.on("\t").join(data[row]));
}

你不需要番石榴。您也可以使用循环和StringBuilder来完成它:

Double[][] data = {
        { 2.3, 5.5, 4.5, 1.2,  3.3 },
        { 2.2,  4.5,  7.5,  6.2,  9.3 }};

for (int row=0; row<data.length; row++) {
    StringBuilder builder = new StringBuilder();
    String prefix = "";
    for (int col=0; col<data[row].length; col++) {
        builder.append(prefix).append(data[row][col]);
        prefix = "\t";
    }
    System.out.println(builder);
}