2016-11-24 47 views
1

我有一個DataTable,我從Excel工作表中填充它。在Excel中列名稱包含空格之間的兩個詞,即從DataTable中刪除列名中的空格

  1. 產品類型
  2. 序列號

我試圖實現

  1. PRODUCTTYPE或PRODUCT_TYPE
  2. SERIALNUMBER或SERIAL_NUMBER

DataTable列是從Excel中動態生成的。我試圖刪除單詞之間的空白,但我似乎無法讓它工作。我目前的代碼去除空格看起來像

foreach (DataRow dr in cloned.Rows) 
{ 
    foreach (DataColumn col in cloned.Columns) 
    { 
     dr[col] = dr[col].ToString().Replace(" ", ""); 
    } 
} 

有人可以告訴我,我要去哪裏錯了請。

+1

嘗試使用.Replace(「」,String.Empty) –

+0

他說什麼。^ –

+0

@Manu仍然是同樣的問題 – Code

回答

3

如果要修改列你並不需要循環行:

foreach(DataColumn c in cloned.Columns) 
    c.ColumnName = String.Join("_", c.ColumnName.Split()); 

使用String.Join("", c.ColumnName.Split()),如果你想刪除的空間。

2

首先,你不需要循環的DataTable

foreach (DataColumn col in cloned.Columns) 
{ 
    col.ColumnName = col.ColumnName.Replace(" ",""); 
} 
+0

謝謝你的回答 – Code

0

我認爲更好的行把檢查數據列的過程中,當列類型爲字符串,則刪除空格

if (col.DataType == typeof(System.String)) 
    { 
    dr[col] = dr[col].ToString().Replace(" ", ""); 
    } 
0

你也可以在你的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); 
}