是否可以删除数据表单元格的第一个元素,即字符串值?
Is it possible to remove the first element of a datatable cell, which is a string value?
我有一个 datatable
填充字符串。
我想删除其中一列的前 2 个元素。
""Edit: By element i mean the first 2 characters of the string of a datacell. End of Edit""
这样的事情在字符串中很容易,使用 remove
命令。但是在数据单元中是否可能相同?
PS:有些人可能会回答 "Why not define the string first, and then place it on the cell",但我宁愿避免它,因为我的单元格是由一系列串联定义的。这是我的做法。
//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;
}
}
}
我不想用细节来填充它,但由于我已经发布了代码,最后我会得到一个以 +
开头的数据单元,我想删除它,它只是那。
编辑2:
我的手机看起来像这样
我想删除第一个 +
:)
你可以用这样的小帮手来做这件事:
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
,而不是赋值true
默认为它。
我有一个 datatable
填充字符串。
我想删除其中一列的前 2 个元素。
""Edit: By element i mean the first 2 characters of the string of a datacell. End of Edit""
这样的事情在字符串中很容易,使用 remove
命令。但是在数据单元中是否可能相同?
PS:有些人可能会回答 "Why not define the string first, and then place it on the cell",但我宁愿避免它,因为我的单元格是由一系列串联定义的。这是我的做法。
//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;
}
}
}
我不想用细节来填充它,但由于我已经发布了代码,最后我会得到一个以 +
开头的数据单元,我想删除它,它只是那。
编辑2:
我的手机看起来像这样
我想删除第一个 +
:)
你可以用这样的小帮手来做这件事:
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
,而不是赋值true
默认为它。