在C#中的逐字字符串文字(@"foo")中,反斜杠不被视为转义,因此执行"获取双引号"不起作用.有没有办法在逐字字符串文字中获得双引号?
这可以理解为不起作用:
string foo = @"this \"word\" is escaped";
Run Code Online (Sandbox Code Playgroud) 在C#6中有一个新功能:插值字符串.
这些允许您将表达式直接放入代码中,而不是依赖于索引:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Run Code Online (Sandbox Code Playgroud)
变为:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Run Code Online (Sandbox Code Playgroud)
但是,我们在使用逐字符串(主要是SQL语句)的多行中有很多字符串,如下所示:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Run Code Online (Sandbox Code Playgroud)
将这些恢复为常规字符串似乎很麻烦:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Run Code Online (Sandbox Code Playgroud)
如何同时使用逐字和插值字符串?
你如何在VB.NET中执行逐字字符串文字?
这在C#中实现如下:
String str = @"c:\folder1\file1.txt";
Run Code Online (Sandbox Code Playgroud)
这意味着反斜杠按字面处理而不是转义字符.
这是如何在VB.NET中实现的?
我对c#有点新,我在这一点上卡住了,我有一个常规的字符串,我用它\
来逃避"
,逃到这里意味着逃避编译器的解释"
,并"
在屏幕上打印,而我得到预期的输出 - >
class Program
{
static void Main(string[] args)
{
string s1 = "This is a \"regular\" string";
System.Console.WriteLine(s1);
System.Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我有一个逐字字符串,我试图以与上面相同的方式逃避"
使用\
..-->
class Program
{
static void Main(string[] args)
{
string s2 = @"This is \t a \"verbatim\" string";//this would escape \t
System.Console.WriteLine(s2);
System.Console.Read();
}
}
Run Code Online (Sandbox Code Playgroud)
为什么以上不起作用?
我喜欢在c#中使用@"字符串",特别是当我有很多多行文本时.唯一的烦恼是我的代码格式化在做这个时会变成doodie,因为第二个和更多的行被完全推到左边而不是使用我格式精美的代码的缩进.我知道这是设计的,但是有一些选项/ hack方法允许这些行缩进,而不向输出添加实际的制表符/空格吗?
添加示例:
var MyString = @" this is
a multi-line string
in c#.";
Run Code Online (Sandbox Code Playgroud)
我的变量声明缩进到"正确"深度,但是字符串中的第二行和更多行被推到左边缘 - 所以代码有点难看.您可以在第2行和第3行的开头添加制表符,但字符串本身将包含这些制表符......有意义吗?
我需要打印
a
"b"
c
Run Code Online (Sandbox Code Playgroud)
使用vebatim字符串,我在这里提出了关于多行代码模板的另一个问题.
我尝试使用逐字字符串如下:
using System;
class DoFile {
static void Main(string[] args) {
string templateString = @"
{0}
\\"{1}\\"
{2}
";
Console.WriteLine(templateString, "a", "b", "c");
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我收到了这个错误.
t.cs(8,11): error CS1525: Unexpected symbol `{'
t.cs(9,0): error CS1010: Newline in constant
t.cs(10,0): error CS1010: Newline in constant
Run Code Online (Sandbox Code Playgroud)
\"{1}\"
不起作用.
怎么了?
我有以下字符串,将无法编译:
String formLookupPull = @"SELECT value1, '"+tableName+"', '"+columnName+"' FROM lkpLookups WHERE ""table"" = '" + tableName + "' and ""field"" = '" + columnName + "';";
Run Code Online (Sandbox Code Playgroud)
违规部分是:
""table"" =
Run Code Online (Sandbox Code Playgroud)
和
""field"" =
Run Code Online (Sandbox Code Playgroud)
编译器在转义序列上变得混乱.任何人都可以看到什么是错的?
我有一个字符串如下:
string example = @"string str = ""forty-two"";
char pad = '*';
Run Code Online (Sandbox Code Playgroud)
输出是
string str = "forty-two"; char pad = '*';
Run Code Online (Sandbox Code Playgroud)
在一条线上.我需要输出作为follwos
string str = "forty-two";
char pad = '*';
Run Code Online (Sandbox Code Playgroud)
如何在此逐字字符串文字中的'char pad'之前插入换行符
我有一个名为defaultPath的路径我想将它添加到这个逐字字符串文字中,但可以得到它周围的引号.
@"""C:\Mavro\MavBridge\Server\MavBridgeService.exe"" /service /data ""..\Data"""
Run Code Online (Sandbox Code Playgroud)
我试图添加+ defaultPath来替换Data.所以假设我有一个文件夹名称Data.Apple我想要输出
"C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\Data.Apple"
Run Code Online (Sandbox Code Playgroud)
但是当我在过去的半小时里一直这样做的时候,我一直在努力
"C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\"Data.Apple
Run Code Online (Sandbox Code Playgroud)
要么
"C:\Mavro\MavBridge\Server\MavBridgeService.exe" /service /data "..\" + defaultPath
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个表示JSON对象数组的字符串文字,所以我想到使用字符串插值功能,如下面的代码所示:
public static void MyMethod(string abc, int pqr)
{
string p = $"[{{\"Key\":\"{abc}\",\"Value\": {pqr} }}]";
}
Run Code Online (Sandbox Code Playgroud)
现在我想到使用逐字字符串,这样我就不必使用反斜杠来转义双引号.所以我通过这个答案来了解逐字字符串和字符串插值可以一起使用.所以我改变了我的代码如下:
public static void MyMethod(string abc, int pqr)
{
string p = $@"[{{"Key":"{abc}","Value": {pqr} }}]";
}
Run Code Online (Sandbox Code Playgroud)
但它无法编译.谁能帮助我,如果有什么错误的,我使用,否则将不能够使用C#字符串逐字功能逃脱在这种情况下双引号?