Java:如何将 3 个线性数组连接到一个 3 列的 CSV 文件中

标签 java arrays csv

我正在使用 puppeteer 抓取网页内容。我设法将我想要的内容抓取到三个单独的数组中,每个数组的元素数量相同。我需要的是将三个线性数组连接起来,使每个线性数组成为不同的列。

我将三个数组放在一个对象中,日志输出如下:

    { header1: 
       [ ' string1 ',
         ' string2 ',
         ' string3 '],

      header2: 
       [ ' string4 ',
         ' string5 ',
         ' string6 '], 

      header3: 
       [ ' string7 ',
         ' string8 ',
         ' string9 ']  
     }

JSON.stringify 会将其更改为:

'{"header1":[" string1 "," string2 "," string3 "],"header2":["string4","string5","string6"],"header3":["string7","string8","string9"]}'

我需要的是这样的 CSV 文件:

header1,header2,header3
string1,string4,string7
string2,string5,string8
string3,string6,string9

我确信这非常简单,但我显然是一个初学者。我发现的大多数信息都涉及将数组相互连接或使用正确的表语法解析 JSON 对象,这与我这里的内容不太相符。谢谢。

最佳答案

What I need is to join the three linear arrays in such a way that each linear array becomes a different column.

第 1 步

定义一个方法来完成这项工作,例如

public String arraysToString(String[] first, String[]... arrays) {
    return "Not implemented yet!";
}

该方法将采用可变数量的 String[] 数组。

第 2 步

定义一些代码来测试该方法,例如

@Test // No clue what this is? Google it - "junit", "tdd", "assertions" ...!
public void testArraysToString() {
    String[] h1 = { "header1", "string1", "string2", "string3" };
    String[] h2 = { "header2", "string4", "string5", "string6" };
    String[] h3 = { "header3", "string7", "string8", "string9" };
    String result = arraysToString(h1, h2, h3);
    String expected = "header1,header2,header3\nstring1,string4,string7\nstring2,string5,string8\nstring3,string6,string9\n";
    org.junit.Assert.assertEquals(expected, result);
    System.out.println(result);
}

第3步

尝试编写一些代码,直到第一个测试用例成功,例如

public String arraysToString(String[] first, String[]... arrays) {
    for (String[] cur : arrays) {
        if (cur.length != first.length) {
            throw new IllegalArgumentException("Precondition failed. Arrays do not have the same length.");
        }
    }
    StringBuilder strb = new StringBuilder();
    for (int i = 0; i < first.length; i++) {
        strb.append(first[i]);
        for (String[] array : arrays) {
            strb.append(",");
            strb.append(array[i]);
        }
        strb.append("\n");
    }
    return strb.toString();
}

这将打印

header1,header2,header3
string1,string4,string7
string2,string5,string8
string3,string6,string9

Note: If your implementation does not behave like expected you are now in a good position to post a question at stackoverflow.com. Just paste your test code and your code together with stack trace and a short description.

第 4 步

添加更多测试用例并增强实现

关于Java:如何将 3 个线性数组连接到一个 3 列的 CSV 文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52649281/

相关文章:

java - Class.getFields() 返回的字段顺序

java - 如何对对象数组列表中的整数进行排序?

java - 创建武器类别和战斗类别

python - 对 csv 读取分割一切感到困惑

java - 如何使用java在CSV的一个单元格中添加逗号分隔值

python - 如何将 TensorFlow 对象检测标签和边界框导出为 CSV 文件?

java - Camel-salesforce-maven-plugin 生成无法编译的代码

java - 无法在 Java 中访问匿名类方法

c - 在 C 中使用数组(输出错误)

java - 在底层组件上触发鼠标事件