如何通过字符串资源制作格式化的字符串

时间:2019-03-31 09:36:00

标签: c# string format resources

我要为异常消息使用字符串:

$"Your file size cannot exceeded from {AppSetting.MaxFileSize}"

但是我想将其放在ResourceFile中:

"ExceededFileSizeException": $"Your file size cannot exceeded from {AppSetting.MaxFileSize}"

制作此字符串并从代码中读取它的最佳方法是什么?

2 个答案:

答案 0 :(得分:2)

这是字符串格式命令的一种全新表示形式。如果要将字符串原样移动到资源文件中,则编译器以后将不对其进行格式化(确保由于上下文变得未知而已在编译时出现问题-输入AppSetting.MaxFileSize应该从哪里来?)

“经典”算法是:

string.Format("Your file size cannot exceeded from {0}", AppSetting.MaxFileSize)

如果以这种方式格式化,则可以将模板字符串移动到资源文件中,然后format方法将起到同样的作用。

答案 1 :(得分:0)

这是我通常要做的

var templateDictionary = new Dictionary<string, string>();
string yourSetting = "mysettings";
//templateDictionary.Add("AppSetting.MaxFileSize", AppSetting.MaxFileSize); // sample
templateDictionary.Add("AppSetting.MaxFileSize", yourSetting);

var inputText = "Your file size cannot exceeded from {AppSetting.MaxFileSize}";
var text = Regex.Replace(inputText, @"\{(.+?)\}", m => templateDictionary["AppSetting.MaxFileSize"]);

我创建了一个扩展方法,可以替换资源文件字符串中的变量。