2013-08-20 82 views
6

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

+5

它不回答你的問題,但我真的建議您使用參數化查詢,而不是通過連接字符串生成它們。關於如何做到這一點,SO上有大量的帖子。 –

+0

爲什麼給你添加'Q.Append(「)」);'如果你想先刪除逗號, –

+2

解決方案不是刪除逗號,而是以不同的方式執行此操作。 –

回答

2

此:

Q.Append(")"); 

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

Q.Append(")"); 

支票if (col_no > 0)是有點過分,因爲如果沒有列,查詢仍然會失敗其他原因更換,但如果我們考慮這個模板上如何組合一個StringBuilder中的字符串,然後檢查是要做的事情。

啊......用這種方式建立查詢是錯誤要做的事情。

0
  1. 正確的方式來實現你的目標是使用參數化查詢。
  2. 沒有把支架
  3. 純回答你的問題可以在此之前刪除最後一個昏迷的可能性:

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

或本:

string query = ext.Remove(ext.LastIndexOf(","), 1); 
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參數來防止sql -in登錄。所以不要在你的sql-string中包含這些值。

13

您可以使用「刪除」的方法,在一個位置刪除特定字符:

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

試試這個。簡單的邏輯

檢查以下假設條件befor添加逗號線

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

        } 
0

更換

  Q.Append(","); 

for循環裏面有

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