我对String.Replace有以下问题:
string str = "0˄0";
str = str.Replace("˄", "&&");
当我打印出str时,它将是“0& 0”而不是“0&& 0”。要获得“0&& 0”,我必须写
str = str.Replace("˄", "&&&&");
为什么?
答案 0 :(得分:6)
&
是WinForms中的一个特殊字符,用于表示键盘快捷键。使用&&
是WinForms如何转义&
符号。
因此,要在WinForms中显示它,你必然必须在你的字符串中放置两个 &
个字符:
str = str.Replace("˄", "&&&&");
这严格来说是一个WinForms“的东西”,与C#或.NET字符串无关。这种方式至少可以追溯到Visual Basic 4 - 可能在此之前。
答案 1 :(得分:3)
您可以查看此帖子: http://moiashvin-tech.blogspot.com/2008/05/escape-ampersand-character-in-c.html
WinForms中的标签处理方式不同。你应该能够像帖子建议那样做,并将UseMnemonic属性设置为false,看看是否有效。
答案 2 :(得分:1)
答案在第一条评论中 - '&'是WinForms(和底层的Win32 API)的特殊字符,它用于指示菜单/对话框项的快捷方式字符。
'&安培;'在字符串中对C#来说没有什么特别之处,但是如果你想把它放在表单/对话框标签上,那么你需要逃避'&'在前面添加另一个。
就个人而言,我会首先在我的“业务逻辑”中获取字符串,然后逃避'&'字符作为在表单上显示字符串的一部分。