我有一个包含" \",但我想删除它。 只需使用
string.Replace(@"\", "");
不起作用。 下面是字符串:
'Samsung Monitor 21\" '
应该是:
'Samsung Monitor 21" '
好的,让我详细介绍一下。
我正在使用postgresql数据库。我的testdatabase包含一些产品,例如。 - >三星显示器21" &lt ;-(我有点害怕使用'和") 我的程序登录到数据库,读取表并将其放入数据表中。 现在我想使用CellEdit事件编辑表。我正构建一个由查询作为命令运行的字符串。由于我没有关键字,因此不允许更改,我必须将该行的每个其他值与我的数据库中的行进行比较。
"UPDATE artikel SET warengruppe = 5 WHERE artikel_nr = '1100pplus' AND
bezeichnung = 'Samsung Monitor 21\" ' AND lieferanten_nr = 134 AND
mengeneinheit = 'ST' AND verkaufspreis = '775.00' AND einkaufspreis
= '465.00' AND lieferzeit = 28 AND bestand_lager = 2 AND bestand_minimum =
10 AND jahresumsatz = '1550.00' AND vorjahresumsatz = '2325.00'"
由于每个Value都是从Datagrids单元格中取出的,因此它会自动将反斜杠放在 - >的前面。 " < - 。 我确实需要在SQLCommand中对它进行比较。
但只是给它那样的字符串,它显然不起作用,因为我的DataBase有
'Samsung Monitor 21" '
而不是
'Samsung Monitor 21\" '
只需使用" LIKE"是一个解决方法..
对于那些要求的人来说,这是我完整的方法:
private void SQLDatagrid_OnCurrentCellChanged(object sender,DataGridCellEditEndingEventArgs e) {
DataGridColumn col1 = e.Column;
DataGridRow row1 = e.Row;
int row_index = ((DataGrid)sender).ItemContainerGenerator.IndexFromContainer(row1);
int col_index = col1.DisplayIndex;
int i = 0;
string commandstring = "UPDATE artikel SET ";
string tmpcell = dt.Rows[row_index][col_index].ToString();
tmpcell = tmpcell.Replace(',', '.');
bool valueisint = isInteger(tmpcell);
commandstring += dt.Columns[col_index].ColumnName + " = ";
if (!valueisint)
{
commandstring += "'";
}
commandstring += tmpcell;
if (!valueisint)
{
commandstring += "'";
}
commandstring += " WHERE ";
foreach (DataColumn dataColumn in dt.Columns)
{
string cell = dt.Rows[row_index][i].ToString();
cell = cell.Replace(',', '.');
bool tmp = isInteger(cell);
if (i > 0 && i != col_index)
{
commandstring += " AND ";
}
if (i != col_index)
{
commandstring += dataColumn.ColumnName + " = ";
if (!tmp)
{
commandstring += "'";
}
commandstring += cell;
if (!tmp)
{
commandstring += "'";
}
}
i++;
}
commandstring = Regex.Replace(commandstring, @"\\", ""); // this is just trying out
commandstring = commandstring.Replace(@"/", ""); // As is this
SqlCommand command = new SqlCommand(commandstring);
答案 0 :(得分:1)
您无需做任何事情。您没有\
的字符串。您的字符串只有"
。调试器和监视窗口以几乎所有语言(C#,VB.NET,Java,Javascript,PHP,Ruby)中的字符串文字使用的形式显示字符串,即前面有\
。
您的字符串 Samsung Monitor 21"
。但是为了在代码中键入它,你必须写:
var myString = "Samsung Monitor 21\" ";
注意
如果您将nq
format specifier添加到监视表达式,例如myString,nq
这表明双引号在普通监视表达式中转义,如果添加,nq
则未转义