天天看点

表格列转行

需求:

将"11,21,31$12,22,32$13,23,33$14,24,34";

转换为:"11,12,13,14$21,22,23,24$31,32,33,34";

分析:

其实就是如下的表格的列转行:

11,21,31

12,22,32

13,23,33

14,24.34

... ...

11,12,13,14,1...

21,22,23,24,2...

31,32,33,34,3...

思路:将所有元素列出来,取定长间隔的元素即可,实现代码:

using system;

using system.collections.generic;

namespace adas

{

class program

public static void main(string[] args)

string orgstring="11,21,31$12,22,32$13,23,33$14,24,34";

// 0,3,6,9

// 1,4,7,10

// 2,5,8,11

string[] orgstrarr=orgstring.split(new char[]{'$'},stringsplitoptions.removeemptyentries);

list<string >strlist=new list<string> ();

int rownum=orgstrarr.length;

int colnum=0;

foreach(string str in orgstrarr)

string[] itemarr=str.split(new char[]{','},stringsplitoptions.removeemptyentries);

colnum=itemarr.length;

foreach(string item in itemarr)

strlist.add(item);

}

for(int i=0;i<rownum-1;i++)

for(int j=i;j<strlist.count;j=j+colnum)

console.writeline(strlist[j]);

console.read();

   for(int i=0;i<rownum-1;i++)

   {

    for(int j=i;j<strlist.count;j=j+colnum)

    {

     console.writeline(strlist[j]);     

    }

   }