【问题标题】:How to convert a monolithic CSV String into a List<String>?如何将整体 CSV 字符串转换为 List<String>?
【发布时间】:2011-07-04 17:05:34
【问题描述】:

我有一个 CSV 存储在字符串中:

Abc, Def, Ghi, Jkl, Mno[CR|LF]
Abc, Def, Ghi, Jkl, Mno[CR|LF]
Abc, Def, Ghi, Jkl, Mno[CR|LF]
Abc, Def, Ghi, Jkl, Mno[CR|LF]

当我在 Notepad++ 中打开文件并使用“Show All Characters”时,我看到每行末尾的换行符由上面提到的[CR|LF] 表示法表示。

如何将这个整体字符串转换为List&lt;String&gt;,其中上面的每一行代表List 中的一个单独字符串,但没有[CR|LF] 字符?

【问题讨论】:

    标签: java string csv arraylist


    【解决方案1】:

    我觉得应该这么简单:

    String allData /* = readCSVFromFile() */;
    String[] rows = allData.split("\r\n");
    List<String> rowList = Arrays.asList(rows);
    

    【讨论】:

    • 请注意,我的回答假设 [CR|LF] 表示始终 CR 后跟 LF。如果不是这种情况,它可能包含其中一个或两个,您可以使用更复杂的正则表达式,例如 .split("[\r|\n]+")
    【解决方案2】:

    使用BufferedReader。像这样的:

    List<String> rows = new ArrayList<String>();
    BufferedReader r = new BufferedReader(new FileReader("file.csv"));
    String line = null;
    while ((line = r.readLine()) != null)
    {
        rows.add(line);
    }
    

    【讨论】:

    • 文件的内容似乎在String 中,因此您也可以使用StringReader 而不是FileReader
    • @Mark:他说:“当我用 Notepad++ 打开它时”
    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 2013-07-18
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多