如何在C#6中使用带字符串插值的转义字符?

时间:2015-07-10 05:27:20

标签: c# .net string-interpolation

我一直在使用字符串插值并喜欢它,但是我有一个问题,我试图在输出中包含反斜杠,但我无法让它工作。

我想要的是这样......

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"

我希望组合的输出为

myDomain\myUserName

我得到的是关于\作为转义字符的语法错误。如果我输入\\那么snytax错误消失了,但输出是myDomain \\ myUsername

如何在插值字符串中包含转义字符?

6 个答案:

答案 0 :(得分:73)

使用反斜杠(\)进行转义适用于除大括号外的所有字符。

如果您试图逃避大括号({}),则必须按{{使用}}public class MainActivity extends AppCompatActivity { public Api mApi; Button data; @Override protected void onCreate( Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); data = (Button) findViewById(R.id.button2); //calling sygic truck api and implementing sygic call back mApi = Api.init(getApplicationContext(), "com.sygic.truck", "com.sygic.truck.SygicService", mApiCallback); //connecting sygic app mApi.connect(); data.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent1 = new Intent(getApplicationContext(), locationInfo.class); Intent intent2 = new Intent(getApplicationContext(), routeInfo.class); Intent[] list = new Intent[2]; list[0] = intent1; list[1] = intent2; startActivities(list); } }); } }

  

...所有出现的双花括号(“{{”和“}}”)都会转换为单花括号。

答案 1 :(得分:4)

$"{domain}\\{user}"

正常工作 - 转义工作正常(逃避{时除外)。至少在.NET 4.6和VS 14.0.22823 D14REL上。

如果由于某种原因它不起作用(也许你正在使用较旧版本的编译器?),你也可以尝试更明确:

$"{domain}{@"\"}{user}"

答案 2 :(得分:2)

嗨逃脱规则插值字符串中的反斜杠与反斜杠重复:

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\\{userName}";

console output

但是如果你也使用插值字符串作为逐字字符串,那么你不需要逃避反斜杠:

var domain = "mydomain";
var userName = "myUserName";
var combo = $@"{domain}\{userName}";

你得到同样的结果:

console output

有关插值字符串的教程:see video interpolated string

答案 3 :(得分:0)

如果我没有错过理解。解决方案非常简单

var domain = "mydomain";
var userName = "myUserName";
var combo = $"{{{domain}}}\\{{{userName}}}";
Console.WriteLine(combo);

我分享了鸟类的回答以及那里提供的好参考。希望它对你有所帮助。我的5美分

答案 4 :(得分:0)

爱德华多是对的。你通过加倍来逃避花括号。因此,如果您想将域变量输出为{mydomain},则需要执行以下操作:

$"{{{domain}}}";

此外,假设当前日期是2016年9月1日,请执行以下操作:

$"The date is {DateTime.Now}";

会输出类似"日期是2016/09/01 3:04:48 PM"取决于您的本地化。您还可以通过执行以下操作格式化日期:

$"The date is {DateTime.Now : MMMM dd, yyyy}";

将输出"日期为2016年9月1日"。插值字符串更具可读性。 Eduardo很好的答案。

答案 5 :(得分:-2)

您可以使用此-

'First, declare the curley braces as chars
        Dim LeftBrace As Char = "{"
        Dim RightBrace As Char = "}"

        'Then in your string, use like this-
        Dim myStr As String = $"This is a {LeftBrace}String{RightBrace}"

        'Now, the output will be
        ' This is a {string}code here