String.Replace无法按预期工作

时间:2012-02-21 19:18:42

标签: c# winforms

我对String.Replace有以下问题:

string str = "0˄0";
str = str.Replace("˄", "&&");

当我打印出str时,它将是“0& 0”而不是“0&& 0”。要获得“0&& 0”,我必须写

str = str.Replace("˄", "&&&&");

为什么?

3 个答案:

答案 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#来说没有什么特别之处,但是如果你想把它放在表单/对话框标签上,那么你需要逃避'&'在前面添加另一个。

就个人而言,我会首先在我的“业务逻辑”中获取字符串,然后逃避'&'字符作为在表单上显示字符串的一部分。