我一直在使用字符串插值并喜欢它,但是我有一个问题,我试图在输出中包含反斜杠,但我无法让它工作。
我想要的是这样......
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{domain}\{userName}"
我希望组合的输出为
myDomain\myUserName
我得到的是关于\作为转义字符的语法错误。如果我输入\\那么snytax错误消失了,但输出是myDomain \\ myUsername
如何在插值字符串中包含转义字符?
答案 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}";
但是如果你也使用插值字符串作为逐字字符串,那么你不需要逃避反斜杠:
var domain = "mydomain";
var userName = "myUserName";
var combo = $@"{domain}\{userName}";
你得到同样的结果:
有关插值字符串的教程:see video interpolated string
答案 3 :(得分:0)
如果我没有错过理解。解决方案非常简单
var domain = "mydomain";
var userName = "myUserName";
var combo = $"{{{domain}}}\\{{{userName}}}";
Console.WriteLine(combo);
我分享了鸟类的回答以及那里提供的好参考。希望它对你有所帮助。我的5美分
答案 4 :(得分:0)
$"{{{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