退出资源文件字符串中的字符?

时间:2014-07-14 15:06:13

标签: vb.net

我一直在全球化一个应用程序,并且一直在使用Resx Manager来让我的生活更轻松。我遇到了一个多行字符串文字,它让我难过。

将此字符串转换为资源时,如何处理转义字符?

If Not RelayMessage(
    "Are you sure you want to do the selected action?" & vbCrLf &
    "A confirmation message will be sent to the user." & vbCrLf &
    "Please ensure you want to perform this action before hitting accept.",
    My.Resources.Confirmation, RelayMessageOptions.Confirm_YesNo) = 
        DialogResult.Yes

如何将该字符串转换为资源?

2 个答案:

答案 0 :(得分:2)

在标准VS资源管理器中(这是您正在使用的管理器?),您可以使用 shift 直接在编辑器中输入多行字符串资源 - Enter

enter image description here

请注意,这实际上存储为CR + LF对的字符串,由space="preserve"属性辅助。在文本编辑器中查看.resx文件:

enter image description here

使用标准消息框的结果:

MessageBox.Show(strings.myString)

enter image description here

答案 1 :(得分:1)

我不知道全球化问题通常是如何处理的。但一种简单的方法是定义自己的转义字符格式。例如,您可以将\n定义为换行符。当您实际使用您的资源时,您可以使用

If Not RelayMessage(Strings.Replace(myResourceString, "\n", vbCrLf),
    My.Resources.Confirmation, RelayMessageOptions.Confirm_YesNo) = 
    DialogResult.Yes

而不是

If Not RelayMessage(myResourceString,
    My.Resources.Confirmation, RelayMessageOptions.Confirm_YesNo) = 
    DialogResult.Yes

或者您可以在资源字符串的ChrW(10) & ChrW(13)位置手动添加字符代码为10和13(例如vbCrLf)的字符。这等于vbCrLf(表示回车(10)+换行(13))。这将避免操纵源代码。像Tab(9)这样的其他东西也有代码。这些被称为控制字符。看一下维基百科http://en.wikipedia.org/wiki/Control_character