从DataTable中删除列名称中的空格
我有一个DataTable
,我从Excel表填充。 Excel中的列名包含两个单词之间的空格,即
- 产品类别
- 序列号
我正在努力实现
- PRODUCTTYPE或PRODUCT_TYPE
- SERIALNUMBER或SERIAL_NUMBER
DataTable
列是从Excel中dynamic生成的。 我试图删除单词之间的空间,但我似乎无法得到它的工作。 我目前的代码去除空白看起来像
foreach (DataRow dr in cloned.Rows) { foreach (DataColumn col in cloned.Columns) { dr[col] = dr[col].ToString().Replace(" ", ""); } }
有人可以告诉我,我要去哪里错了。
如果要修改列,则不需要循环行:
foreach(DataColumn c in cloned.Columns) c.ColumnName = String.Join("_", c.ColumnName.Split());
如果你想删除空格String.Join("", c.ColumnName.Split())
请使用String.Join("", c.ColumnName.Split())
。
首先,您不需要循环DataTable
的行
foreach (DataColumn col in cloned.Columns) { col.ColumnName = col.ColumnName.Replace(" ",""); }
我认为最好把数据列的检查过程,当列types是string,然后删除空间
if (col.DataType == typeof(System.String)) { dr[col] = dr[col].ToString().Replace(" ", ""); }
你也可以在你的foreach循环中使用下面的方法。
public static string TrimAllWithSplitAndJoin(string str) { return string.Concat(str.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries)); } static Regex whitespace = new Regex(@"\s+", RegexOptions.Compiled); public static string TrimAllWithRegex(string str) { return whitespace.Replace(str, ""); } foreach (DataColumn col in cloned.Columns) { col.ColumnName = TrimAllWithSplitAndJoin(col.ColumnName); }