我已将网格转换为CSV格式,将其转换为字符串以保存网格。
但是,当我想打开CSV文件时,我必须将字符串重新转换为2D数组..我试图找出如何做到这一点,但我不确定如何加入这两个{{ 1}}以便它变成2D数组。
我添加了string[]
,其中行结束,新行必须开始,但我对如何将其添加到一起感到困惑。
代码:
;
任何帮助将不胜感激。
答案 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(",");