簡體   English   中英

如何處理C#中引號內的引號?

[英]How to deal with quotes within quotes in C#?

主要問題:
有沒有辦法在C#中的字符串中插入一個雙引號

信息:
我試圖在C#中執行類似下面的SQL Select語句

SELECT Name FROM Production.Product
WHERE CONTAINS(Name, '"chain*"');  

我把它解釋如下:

string selectCommand= @"select Name from Production.Products  
WHERE contains (Name,'\"" + chain+ "*\"')");

但我得到的字符串:

“WHERE包含(名稱,'\\”鏈\\“')”

我也嘗試過這個SOF 問題,但它也沒有用!:

string selectCommand= @"select Name from Production.Products  
where contains (doc.document_name,'"""""" + full + """"""')");

如果查看字符串文字的文檔,您會發現有兩種格式。 常規格式,您必須轉義所有以下字符:

', ", \, 0, a, b, f, n, r, t, u, U, x, v.

所以你的字符串應該寫成如下:

string query = "WHERE CONTAINS(Name, \'\"chain*\"\');";

或逐字文字,前面帶有'at'符號,您只能通過'加倍'來轉義雙引號:

string query = @"WHERE CONTAINS(Name, '""chain*""');";

所以只需從字符串中刪除“@”即可。

這是因為你的字符串開頭有一個@

string selectCommand= "select Name from Production.Products where contains (doc.document_name,\'\"" + full + "*\"\');";

你基本上需要逃避'"

只需在字符串的開頭刪除@即可。

在字符串中保留反斜杠的原因是因為您已經告訴字符串不要通過將@放在字符串前面來替換轉義的字符序列。 刪除@將允許您的轉義字符轉義。

這樣的事情可能是:

string full = "abc";
string selectCommand= @"select Name from Production.Products where contains (doc.document_name,'""" + full + "*\"')";

“@”對你沒有幫助。 刪除它,你應該沒事。 這應該工作:

Console.WriteLine("...(doc.document_name,'\\"" + full + "*\\"')");

如果你真的想保留“@”,試試這個:

Console.WriteLine(@"...(doc.document_name,'""" + full + "*\\"')");

暫無
暫無

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

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