如何使用Visual Studio C#转置文本数据

时间:2017-09-13 07:36:55

标签: xml xslt xslt-1.0

我有一个txt文件,它是纯数据(没有标记语言),如下所示:

A 3 8 7
d E 9 S

现在我需要使用Visual Studio C#加载它并将其转换为另一个txt文件,如:

A d
3 E
8 9
7 S

所有分区都是TAB而不是空格

非常感谢!

1 个答案:

答案 0 :(得分:0)

在XQuery 3.1中尝试这个:

declare namespace array = "http://www.w3.org/2005/xpath-functions/array";
let $in := unparsed-text-lines('test.txt') ! array{tokenize(.)}
return fold-left(tail($in), head($in), array:for-each-pair(?, ?,         
         function($x, $y){$x || ' ' || $y}))?* => string-join('
')

其中大部分是纯XPath 3.1,因此如果您想要这样做,可以将其集成到XSLT样式表中。

它是如何运作的?

首先读取输入文件的行,然后将每行标记为$ in,作为包含输入行的数组序列。

然后依次为每对行连接相应的成员对以创建以空格分隔的字符串。使用生成的字符串数组,首先转换为字符串序列(使用“?*”),然后使用换行符作为分隔符连接此序列中的字符串。

您可以通过安装Saxon(需要Saxon-PE或更高版本)从C#运行它。