是否可以删除数据表单元格的第一个元素,这是一个字符串值?

时间:2015-04-16 15:27:47

标签: c# datatable

我的datatable填充了字符串。

在这些列中,我想删除前两个元素。

“”编辑:按元素我的意思是数据中心字符串的前2个字符。编辑结束“”

使用remove命令在字符串中很容易。但在datacell中是否可以这样做?

PS:有些人可能会回答“为什么不首先定义字符串,然后将其放在单元格上”,但我宁愿避开它,因为我的单元格是由一系列连接定义的。我就是这样做的。

//create a list of the columns name
  List<string> listadecolunas = new List<string>();
                foreach (DataColumn coluna in DataAccess.Instance.tabelafinal5.Columns)
                {
                    listadecolunas.Add(coluna.ColumnName);

                }

 //create a concatenated string that encolsures all the following columns

 for (int i = 0; i < DataAccess.Instance.tabelafinal5.Rows.Count; i++)
                {
                    for (int y = 2; y < listadecolunas.Count; y++)
                    {
                        string elemento0 = DataAccess.Instance.tabelafinal5.Rows[i][y].ToString();

                        if (elemento0 != "")
                        {

                                DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + " + " + elemento0;
                        }
                    }

                } 

我不想用详细信息来填充它,但是因为我发布了代码,最后我会得到一个以+开头的数据中心,我想删除它,就是这样。

EDIT2: 我的手机看起来像这样 enter image description here

我想删除第一个+:)

1 个答案:

答案 0 :(得分:1)

你可以用这样的小帮手来做到这一点:

for (int i = 0; i < DataAccess.Instance.tabelafinal5.Rows.Count; i++)
{
    bool isFirst = true;
    for (int y = 2; y < listadecolunas.Count; y++)
    {
        string elemento0 = DataAccess.Instance.tabelafinal5.Rows[i][y].ToString();

        if (elemento0 != "")
        {
            if(isFirst)
            {
                isFirst = false;
                DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + elemento0;
            }
            else
            {
                DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + " + " + elemento0;
            }
        }
    }
} 

使用StringBuilder同样的概念更有效:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < DataAccess.Instance.tabelafinal5.Rows.Count; i++)
{
    bool isFirst = true;
    sb.Clear();
    for (int y = 2; y < listadecolunas.Count; y++)
    {
        string elemento0 = DataAccess.Instance.tabelafinal5.Rows[i][y].ToString();

        if (elemento0 != "")
        {
            if(isFirst)
            {
                isFirst = false;
            }
            else
            {
                sb.Append(" + ")
            }
            sb.Append(elemento0);
        }
    }
    if(sb.Length > 0)
    {
    DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + sb.ToString();
    }
} 

现在,如果你甚至在不同的方法中构建Cell并且你不知道之前发生了什么,你可以根据单元格的当前值是否为空来设置isFirst,而不是分配{{ 1}}默认情况下。