今天我发现将字符串放在资源文件中将导致它们被视为文字,即将"第一行文本\n第二行文本"放入将导致转义字符本身被转义,因此存储的是"第一行的文字\n第二行的文字" - 然后这些出现在显示中,而不是我的回车和标签
所以我想做的是使用string.replace \\
变成\
- 这似乎不起作用.
s.Replace("\\\\", "\\");
根本不会改变字符串,因为字符串认为只有1个反斜杠
s.Replace("\\", "");
替换所有的双引号,只留下n代替\n
另外,使用@
和一半的\
字符或Regex.Replace
方法给出相同的结果
任何人都知道一个很好的方法来做到这一点,而不是逐字逐句地循环?
因为\n
实际上是单个字符,所以只需替换字符串中的反斜杠就无法实现这一点.您需要\
使用转义字符替换每对和后续字符,例如:
s.Replace("\\n", "\n"); s.Replace("\\t", "\t"); etc
调整resx文件本身会更好.可以通过两种机制输入换行符:您可以将resx文件编辑为XML(在解决方案资源管理器中右键单击,选择"打开方式",然后选择XML),或者您可以在设计器中执行此操作.
如果你在XML中执行它,只需按Enter键,退格到你创建的换行符的开头,然后就完成了.您可以使用"搜索和替换"执行此操作,但这会很棘手.
如果您使用GUI resx编辑器,按住ENTER键的同时按住SHIFT将为您提供换行符.
你可以做运行时替换的事情,但正如你发现的那样,开始工作很棘手 - 在我的脑海里构成代码味道.(您也可以创建性能参数,但这取决于字符串资源的调用频率和应用程序的规模.)