对象上的方法 ToString() 添加反斜杠以转义字符
Method ToString() on object adds a backslash to escape characters
我不明白我的代码中发生了什么。
我有一个 WrapPanel
,其中包含一些 RadioButton
。我使用 Tag
属性 将 RadioButton 的 Content
属性 与真实字符相关联:例如制表 = \t.
这是 XAML 部分:
<WrapPanel HorizontalAlignment="Left" Margin="43,24,0,21" Name="wpColSep" VerticalAlignment="Center" Width="286" Orientation="Horizontal" Height="58">
<RadioButton Content="Tabulation" Height="16" Name="rbTab" Padding="6,0,20,0" Margin="0,0,0,7" Tag="\t" />
<RadioButton Content="Espace" Height="16" Name="rbSpace" Padding="6,0,20,0" Margin="0,0,0,7" Tag=" " />
<RadioButton Content="Point-virgule" Height="16" Name="rbPointVirgule" Padding="6,0,20,0" Margin="0,0,0,7" Tag=";" />
<RadioButton Content="Virgule" Height="16" Name="rbVirgule" Margin="0,7,0,0" Padding="6,0,20,0" Tag="," />
<RadioButton Content="Autre :" Height="16" Name="rbAutre" Margin="0,7,0,0" Padding="6,0,20,0" />
<TextBox Height="23" Name="tbAutre" Width="41" Margin="0,10,0,0" Padding="6,0,20,0" />
</WrapPanel>
然后,我尝试获取选中的 RadioButton
并使用此代码将字符保存在 Tag
中:
var rbChecked = wpColSep.ChildrenOfType<RadioButton>().Where(c => c.IsChecked ?? false).FirstOrDefault();
if (rbChecked == rbAutre && !String.IsNullOrEmpty(tbAutre.Text))
{
//Not important here
}
else if (rbChecked != null)
{
ConfigImport.SeparateurColonne = rbChecked.Tag.ToString();
}
else
{
//No RadioButton checked
}
这非常有效,但是当 Tag
= "\t" 时,rbChecked.Tag.ToString()
生成 "\\t"。
这是什么原因,我该如何避免?
提前谢谢你,抱歉我的英语不好。
您可能正在调试器中查看结果。
C# 必须使用 \
转义某些字符,例如 \t
、\r
和 \"
。您将在调试器控制台中看到该转义字符串。别担心,实际的字符串很好。单击变量旁边的放大镜,您将看到实际值。
'wrong'值(与string abc = "abc\n"
相同):
看起来不错:
我不明白我的代码中发生了什么。
我有一个 WrapPanel
,其中包含一些 RadioButton
。我使用 Tag
属性 将 RadioButton 的 Content
属性 与真实字符相关联:例如制表 = \t.
这是 XAML 部分:
<WrapPanel HorizontalAlignment="Left" Margin="43,24,0,21" Name="wpColSep" VerticalAlignment="Center" Width="286" Orientation="Horizontal" Height="58">
<RadioButton Content="Tabulation" Height="16" Name="rbTab" Padding="6,0,20,0" Margin="0,0,0,7" Tag="\t" />
<RadioButton Content="Espace" Height="16" Name="rbSpace" Padding="6,0,20,0" Margin="0,0,0,7" Tag=" " />
<RadioButton Content="Point-virgule" Height="16" Name="rbPointVirgule" Padding="6,0,20,0" Margin="0,0,0,7" Tag=";" />
<RadioButton Content="Virgule" Height="16" Name="rbVirgule" Margin="0,7,0,0" Padding="6,0,20,0" Tag="," />
<RadioButton Content="Autre :" Height="16" Name="rbAutre" Margin="0,7,0,0" Padding="6,0,20,0" />
<TextBox Height="23" Name="tbAutre" Width="41" Margin="0,10,0,0" Padding="6,0,20,0" />
</WrapPanel>
然后,我尝试获取选中的 RadioButton
并使用此代码将字符保存在 Tag
中:
var rbChecked = wpColSep.ChildrenOfType<RadioButton>().Where(c => c.IsChecked ?? false).FirstOrDefault();
if (rbChecked == rbAutre && !String.IsNullOrEmpty(tbAutre.Text))
{
//Not important here
}
else if (rbChecked != null)
{
ConfigImport.SeparateurColonne = rbChecked.Tag.ToString();
}
else
{
//No RadioButton checked
}
这非常有效,但是当 Tag
= "\t" 时,rbChecked.Tag.ToString()
生成 "\\t"。
这是什么原因,我该如何避免?
提前谢谢你,抱歉我的英语不好。
您可能正在调试器中查看结果。
C# 必须使用 \
转义某些字符,例如 \t
、\r
和 \"
。您将在调试器控制台中看到该转义字符串。别担心,实际的字符串很好。单击变量旁边的放大镜,您将看到实际值。
'wrong'值(与string abc = "abc\n"
相同):
看起来不错: