Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 向用户显示格式字符串_C#_Data Annotations_String Formatting - Fatal编程技术网

C# 向用户显示格式字符串

C# 向用户显示格式字符串,c#,data-annotations,string-formatting,C#,Data Annotations,String Formatting,如何按原样显示格式字符串 我有一个用一些数据注释装饰的属性: [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] public blah blah { get; set; } 我现在有一个对格式字符串的引用: string format = metadata.DisplayFormatString; // == {0:MM/dd/yyyy} 我想向用户显示此格式字符串,而无需在我的视图中手动键入它。有没有一种不使用空字符串替换字符的好方法

如何按原样显示格式字符串

我有一个用一些数据注释装饰的属性:

[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public blah blah { get; set; }
我现在有一个对格式字符串的引用:

string format = metadata.DisplayFormatString; // == {0:MM/dd/yyyy}

我想向用户显示此格式字符串,而无需在我的视图中手动键入它。有没有一种不使用空字符串替换字符的好方法可以从字符串格式中获取MM/dd/yyyy?

I使用replace也是一种好方法。如果您担心视图中的混乱,您可以将其放入扩展方法,甚至HTML助手扩展方法中

public static string ToUserFriendlyDateFormat(this string unfriendlyFormat) {
    return unfriendlyFormat
        .Replace("{0:", string.Empty)
        .Replace("}", string.Empty);
}

我不知道你所有的格式字符串都是什么样子,但是如果你的格式字符串变成了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}的序列,并且希望对它们进行特殊处理,则必须更改上述代码

为什么不换个炉子呢?这肯定是其他任何方法都能做到的吗?我想您可以使用正则表达式,但这非常类似,因为我有几个不同格式的字符串。其中一些包含冒号之类的,应该显示出来,我希望有一种通用的方法可以这样做,我不必担心转义字符之类的。因为没有通用的方法来处理它,我使用了一个简单的替换,它有我不同格式字符串的情况。