2014-01-05 99 views
0

我需要改变我的CSV文件的格式。如何重新格式化CSV文件?

我的CSV文件:

x,a,b,c 
e,,2,1 
f,3,15, 
g,7,8,9 

所需格式:

ea0 
eb2 
ec1 
fa3 
fb15 
fc0 
ga7 
gb8 
gc9 

我写代码,但它不工作:

string log = retval(textBox1.Text, 0, 512); 
string[,] head = new string[4, 4]; 

int row=0; 
int column=0; 

string[] lines = log.Split('\n'); 
foreach (string l in lines) 
{ 
    string[] split = l.Split(','); 
    foreach (string item in split) 
    { 

     head[row, column] = item; 
     column++; 
    } 
    row++; 
} 


for (row=1; row < 4; row++) 
{ 
    string tmp = ""; 
    for (column = 1; column < 4; column++) 
    { 
     tmp = head[row, column]; 

    } 
    listBox1.Items.Add(tmp); 
} 
+1

这种格式背后的逻辑是不是clear.Why你想要这个格式以及如何手动创建这种格式。 – Innovation

+0

你想要的“EA0”,“EB2”值'listBox1'就结了? –

+0

我正在为他添加一个澄清编辑。请耐心等待。我破解了代码! :) –

回答

0

我不是100%肯定你会在这里的话,但这个怎么样:

foreach (string l in lines) 
{ 
    string[] split = l.Trim().Split(','); 
    foreach (string item in split) 
    { 

     head[row, column] = item; 
     column++; 
    } 
    row++; 
    column = 0; 
} 

for (row = 1; row < 4; row++) 
{ 
    for (column = 1; column < 4; column++) 
    { 
     string rowAndColumn = head[row, 0] + head[0, column]; 
     string value = string.IsNullOrEmpty(head[row, column]) ? "0" : head[row, column]; 

     listBox1.Items.Add(rowAndColumn + value); 
    } 
} 

一个重要的变化是在第一循环foreachcolumn = 0;。如果没有这个,你的column索引总是会超出界限。

第二foreach环检索的行和列值,并用数值串接它。这样做,我会得到你想要的输出。

+0

它运行良好,但在fc0这返回fc 请更正它 谢谢 –

+0

@HadiRanji它适用于我,但请参阅我的编辑。在这种情况下,我已切换线'串[]分裂= l.Split( ' ');''到串[]分裂= l.Trim()分割(',');'。这样做应该可以防止线路在空白处结束的问题。 –

+0

对不起,我没有看到它,非常感谢 –

0

你是从1开始的索引,而不是的0,

使用第是不是:

for (row=0; row < 4; row++) 
    { 
     string tmp = ""; 
     for (column = 0; column < 4; column++) 
     { 
      tmp = head[row, column]; 

     } 
     listBox1.Items.Add(tmp); 
    }