将CSV字符串[]转换为字符串[] []

时间:2014-01-21 19:47:02

标签: java csv

我已将网格转换为CSV格式,将其转换为字符串以保存网格。

但是,当我想打开CSV文件时,我必须将字符串重新转换为2D数组..我试图找出如何做到这一点,但我不确定如何加入这两个{{ 1}}以便它变成2D数组。

我添加了string[],其中行结束,新行必须开始,但我对如何将其添加到一起感到困惑。

代码:

;

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

带有#行和索引的.csv文件格式:

       | columnIndex
       | 1 2 3 4 
----------------
line1  | 1,2,3,4
line2  | 5,6,7,8
line3  | 9,a,b,c
...
lineN  | w,x,y,z

通过这种可视化,应该很容易看到如何解析它。这是一个代码片段,可以将其读入您的gridWorld数组,希望这会有所帮助:

lineIndex = 0;
while ((line = br.readLine()) != null) {
    String[] split = line.split(",");
    for (int i=0; i<split.length; i++) {
        gridWorld[lineIndex][i] = split[i].charAt(0);        
    }
    lineIndex++;
}

答案 1 :(得分:0)

如果您输入的csv文件格式错误

words,things,stuff;more words, more stuff, more things
line2 words,line2 stuff,line2 things; 

因此,文件中有多行,;行中您想要分隔成不同的行,以便输出

words,things,stuff
more words,more stuff, more things
line2 words,line2 stuff,line2 things

您需要做的是先读取每一行,然后按;将其分解为内存。以下方法也意味着您无需事先知道网格的大小

ArrayList<String> al = new ArrayList<String>();
while ((line = br.readLine()) != null) {
{
    String[] split1 = line.split(";");
    for( String s1 : split1)
        al.add(s1);
}

String[][] gridWorld = new String[al.size()][];

for(int i = 0; i < al.size(); i++)
{
    gridWorld[i] = al.get(i).split(",");
}

这一切都可以归结为

ArrayList<String> al = new ArrayList<String>();
while ((line = br.readLine()) != null) {
    al.addAll(Arrays.asList(line.split(";")));

String[][] gridWorld = new String[al.size()][];

for(int i = 0; i < al.size(); i++)
    gridWorld[i] = al.get(i).split(",");