如何从字符串中删除字符的最后一个实例

时间:2013-08-20 07:50:30

标签: c# asp.net string character trim

我正在使用StringBuilder构建一个字符串。

StringBuilder Q = new StringBuilder();
Q.Append("INSERT INTO ");
Q.Append(_lstview_item);
Q.Append(" VALUES");
Q.Append("("); 
for (i = 0; i < col_no; i++)
{
    Q.Append("'");
    Q.Append(col_value[i]);
    Q.Append("'");
    Q.Append(",");
} 
Q.Append(")");
string query = Q.ToString();

但是,我的字符串末尾有一个","。 我尝试使用

string query = ext.Substring(0, ext.LastIndexOf(",") + 1);

删除多余的",",但这也会删除")"

如何仅删除最后逗号?

实际结果INSERT INTO .... VALUES('1','2','3',)

期望的结果INSERT INTO .... VALUES('1','2','3')

6 个答案:

答案 0 :(得分:16)

您可以使用&#34;删除&#34;删除某个位置的特定字符的方法:

query = query.Remove(query.LastIndexOf(","), 1);

答案 1 :(得分:2)

此:

Q.Append(")");

替换为

if (col_no > 0)
{
    Q.Length--;
}

Q.Append(")");

支票if (col_no > 0)有点过分,因为如果没有列,查询仍然会因其他原因而失败,但如果我们认为这是一个关于如何在StringBuilder中组合字符串的模板,然后检查是正确的要做的事情。

啊......以这种方式构建查询是错误的要做的事情。

答案 2 :(得分:1)

我建议您在添加最后一个)之前先删除逗号,所以:

for (i = 0; i < col_no; i++)
{
    Q.Append("'");
    Q.Append(col_value[i]);
    Q.Append("'");
    Q.Append(",");

} 
if(col_no > 0) Q.Length --; // <-- this removes the last character
Q.Append(")");
string query = Q.ToString();

但是,如果你真的想创建一个sql-query,我强烈建议使用sql-parameters来阻止sql-injection 。所以不要在sql-string中包含这些值。

答案 3 :(得分:0)

  1. 实现目标的正确方法是使用参数化查询。
  2. 可以在放置括号之前删除最后一个昏迷
  3. 你问题的纯粹答案可以是:
  4. string query = ext.Substring(0, ext.LastIndexOf(",")) + ext.Substring(ext.LastIndexOf(",") + 1);
    

    或者这个:

    string query = ext.Remove(ext.LastIndexOf(","), 1);
    

答案 4 :(得分:0)

试试这个。简单的逻辑

在追加逗号行

之前检查以下条件
                  **if(i!=(col_no-1))
                    {
                    Q.Append(",");
                    }*

使用您的代码。

                 for (i = 0; i < col_no; i++)
                  {
                    Q.Append("'");
                    Q.Append(col_value[i]);
                    Q.Append("'");
                    **if(i!=(col_no-1))
                    {
                    Q.Append(",");
                    }**

                  } 

答案 5 :(得分:0)

替换

            Q.Append(","); 

中的for循环内部的

            if (i != col_no - 1)
            {
                Q.Append(",");
            }