C#如何将“”替换为“

时间:2019-01-18 13:38:44

标签: c#

我正在尝试用\documentclass{article} \newcommand{\scr}[1]{ \begin{minipage}{0.9\textwidth} \fbox{ \parbox{\textwidth}{ \verb~#1~ % <-- HERE } } \end{minipage} } \begin{document} \scr{Some script code here... here a tilde : \textasciitilde } \end{document} 替换字符串中的listings,我该怎么做? 我尝试使用replace,但是找不到解决方法。

例如:

\"

谢谢。

5 个答案:

答案 0 :(得分:3)

因为引号用于开头和结尾的字符串(它们是控制字符的一种),所以不能在字符串中间加上引号,因为这样会终止字符串

string replaced = "This is a "sample" ";
/*
You can see from the syntax highlighting (red) that the string is being
detected as <This is a > and <sample> is black meaning it is detected as 
code (and will cause a syntax error)
*/

为了将引号放在字符串的中间,我们使用转义字符(在C#中为反斜杠)将其转义(转义表示将其视为字符文字而不是控制字符)。

string line = "This is a \"sample\"";
Console.WriteLine(line);
// Output: This is a "sample"

string literalLine = @"This is a ""sample""";
Console.WriteLine(literalLine);
// Output: This is a "sample"

C#中的@符号表示我希望它是一个文字字符串(忽略控制字符),但是引号仍然是开始和结束字符串,因此要在文字字符串中打印引号,您可以将其中两个写为“”(即语言的设计方式)

答案 1 :(得分:0)

情况1:如果变量line中的值实际上是This is a \"sample\",则可以执行line.Replace("\\\"", "\"")

如果不是: \"是一个转义序列。它在代码中显示为\",但是在编译时将显示为",而不是原始的\"

转义引号的原因是因为编译器无法识别该引号是否在另一个引号内。让我们看看您的示例:

"This is a "sample" "

This is a是一组,然后是未知标记sample,然后是另一个引号吗?或This is a "sample"全部用引号引起来?我们可以通过查看上下文来猜测,但是编译器不能。因此,我们使用转义序列告诉编译器“我使用双引号字符作为字符,而不是字符串文字的关闭/打开。”

另请参阅:https://en.wikipedia.org/wiki/Escape_sequences_in_C

答案 2 :(得分:-3)

您可以尝试如下操作:

String str = "This is a \"sample\" ";
Console.WriteLine("Original string: {0}", str);
Console.WriteLine("Replaced: {0}", str.Replace('\"', '"'));

答案 3 :(得分:-3)

期望的输出:这是一个示例

给出字符串:"This is a \"sample\""

问题:您有转义字符,防止双引号被解释。 \转义字符是一条指令,字面上使用引号而不是使用引号指示字符串中的换行符。这意味着当用作输出时,实际的字符串值为"This is a "sample""

删除\的答案可能有用,但是它使代码很臭,因为以这种方式删除转义字符可能会使您不清楚您打算做什么,并阻止您转义任何字符。

删除"可能会起作用,尽管它会阻止使用任何引号,并且某些IDE可能会留下转义符以破坏您的一天。

我们想要一个特定的目标,即“样本”周围的引号。

            string sample = "This is a \"sample\"";
            List<string> sampleArray = sample.Split(' ').ToList(); // samplearray is now split into ["This", "is", "a", "\"sample\""]
            var x = sampleArray.FirstOrDefault(t => t == "\"sample\"");  //isolate our needed value
            if (x != null) //prevent a null reference in case something went wrong and samplearray wasnt as expected
            { 
                var index = sampleArray.IndexOf(x); //get the location of the value we just picked
                x = x.Replace("\"", string.Empty); //replace chars
                sampleArray[index] = x; //assign new value to the list

            }
            return String.Join(" ", sampleArray); //return the string joined together with spaces. 

答案 4 :(得分:-4)

尝试一下:

string line="This is a \"sample\" " ;
replaced =line.Replace(@"\", "");