簡體   English   中英

如何從字符串中刪除字符的最后一個實例

[英]How to remove LAST INSTANCE of a character from a string

我正在使用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')

您可以使用“刪除”方法刪除某個位置的特定字符:

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

這個:

Q.Append(")");

用。。。來代替

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

Q.Append(")");

檢查if (col_no > 0)是否有點過分,因為如果沒有列,查詢仍會因其他原因而失敗,但如果我們認為這是一個關於如何在StringBuilder組合字符串的模板,那么檢查就是正確的事情。

啊......以這種方式構建查詢是錯誤的。

我建議你添加最后前先刪除逗號) ,那么:

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中包含這些值。

  1. 實現目標的正確方法是使用參數化查詢。
  2. 在放置括號之前可以刪除最后一個昏迷
  3. 對你的問題的純粹答案可以是這樣的:

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

或這個:

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

嘗試這個。 簡單的邏輯

檢查以下條件是否為befor append逗號行

                  **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(",");
                    }**

                  } 

更換

            Q.Append(","); 

在for循環中

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM