遍历数据行并更新单元格

时间:2018-07-27 18:15:07

标签: c# ado.net

我有以下代码:

foreach (DataRow row in table.Rows)
                {
                    //cell cannot contain any of the following characters: :\/?*[]'                       
                }

我之前不知道该列的名称,或者我可以做类似的事情:

    if (row["Name"].ToString() == "SomeName"). 

我想做的是,如果任何单元格包含任何字符:/?* []',我想用一个空字符串替换它。

2 个答案:

答案 0 :(得分:1)

您可以尝试:

foreach (DataRow row in table.Rows)
{
    // Loop through the cell values
    foreach (object item in row.ItemArray) 
    {
       // Get the cell value
       string cellValue = item.ToString();
       // Remove unwanted characters
       cellValue = cellValue.Replace(":","");
       cellValue = cellValue.Replace("/","");
       cellValue = cellValue.Replace("?","");
       cellValue = cellValue.Replace("*","");
       cellValue = cellValue.Replace("[","");
       cellValue = cellValue.Replace("]","");
       cellValue = cellValue.Replace("'","");
    {
}

这可能不是最好的方法,但是如果您赶时间的话应该可以使用

答案 1 :(得分:0)

您可以尝试将Regex.Replace:|\\/|\\?|\\*|\\[|\\]|'"一起使用,以将字符替换为空字符串。

Regex regex = new Regex(":|\\/|\\?|\\*|\\[|\\]|'");
foreach (DataRow row in table.Rows)
{
    foreach (object item in row.ItemArray) 
    {
        var result = regex.Replace(item.ToString(), string.Empty);
    }
}

c# sample

Regex regex = new Regex(":|\\/|\\?|\\*|\\[|\\]|'");
var result = regex.Replace("2:76000?0178'12?0[0]8", string.Empty);

结果

276000017812008