从DataTable中删除列名称中的空格

我有一个DataTable ,我从Excel表填充。 Excel中的列名包含两个单词之间的空格,即

  1. 产品类别
  2. 序列号

我正在努力实现

  1. PRODUCTTYPE或PRODUCT_TYPE
  2. 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); }