我正在尝试从文件(csv标题)中读取一行,并使用以下代码创建一个列在每列前面的“c [num] _”列列表:
int colCount=0;
string line = "col1,col2,col3,col4,col5";
string ColumnList = "([" + (++colCount).ToString() + "_" + line.Replace(",", "],[c" + (++colCount).ToString() + "_") + "]";
我知道它不优雅,但我也不确定为什么我的colCount变量不会在replace中增加?它的结果如下:
([c0_col1],[c1_col2],[c1_col3],[c1_col4],[c1_col5])
计数器第一次递增,然后在替换内不再递增。任何见解?我认为用Regex ReplaceEvaluator编写它可能会更好,但我还没能将它们拼凑在一起。
答案 0 :(得分:0)
Replace
方法的参数是字符串,你输入的表达式只是一个字符串。计数始终为2
。它不是Func
,而是string
。
您可以使用以下Linq轻松实现您想要的转换:
string ColumnList = string.Join(",", line.Split(',').Select((s, i) => $"[c{i + 1}_{s}]"));