如何按原样显示格式字符串?
我有一个用一些数据注释装饰的属性:
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public blah blah { get; set; }
我现在有一个格式字符串的引用:
string format = metadata.DisplayFormatString; // == {0:MM/dd/yyyy}
我想向用户显示此格式字符串,而无需在我的视图中手动输入。有没有一种很好的方法(不是用空字符串替换字符)从字符串MM/dd/yyyy
获取format
?
答案 0 :(得分:0)
我使用替换的东西也是一个很好的方式。如果您担心视图中的混乱,可以将其放入扩展方法(甚至是HTML Helper扩展方法)。
public static string ToUserFriendlyDateFormat(this string unfriendlyFormat) {
return unfriendlyFormat
.Replace("{0:", string.Empty)
.Replace("}", string.Empty);
}
答案 1 :(得分:0)
我不知道你的所有格式字符串是什么样的,但是如果你的格式字符串使它成为String.Format()你必须转义{和}字符(通过加倍它们)。如何使用正则表达式。这里有一些简单的开头,它也会使{和}字符加倍:
string DisplayFormat(string format) {
Regex rx = new Regex(@"\{\d+:([^}]+)}|\{\{|}}");
return rx.Replace(format, delegate(Match m) {
if (m.Value == "{{") {
return "{";
} else if (m.Value == "}}") {
return "}";
} else {
return m.Groups[1].Value;
}
});
}
请注意,如果您的格式字符串包含{0}
等序列,则上述代码必须更改,并且您还需要对它们执行特殊操作。