我正在尝试用\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,但是找不到解决方法。
例如:
\"
谢谢。
答案 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"
全部用引号引起来?我们可以通过查看上下文来猜测,但是编译器不能。因此,我们使用转义序列告诉编译器“我使用双引号字符作为字符,而不是字符串文字的关闭/打开。”
答案 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(@"\", "");