zoukankan      html  css  js  c++  java
  • Named Formats!

    原文发布时间为:2011-06-26 —— 来源于本人的百度文章 [由搬家工具导入]

    using System;
    using System.Text;
    using System.Web;
    using System.Web.UI;

    namespace StringLib
    {
    public static class HenriFormatter
    {
    public static string FormatWith(this string format, object source)
    {
    if (format == null)
    throw new ArgumentNullException("format");

    var result = new StringBuilder(format.Length * 2);
    var expression = new StringBuilder();

    var e = format.GetEnumerator();
    while (e.MoveNext())
    {
    var ch = e.Current;
    if (ch == '{')
    {
    while (true)
    {
    if (!e.MoveNext())
    throw new FormatException();

    ch = e.Current;
    if (ch == '}')
    {
    result.Append(OutExpression(source, expression.ToString()));
    expression.Length = 0;
    break;
    }
    if (ch == '{')
    {
    result.Append(ch);
    break;
    }
    expression.Append(ch);
    }
    }
    else if (ch == '}')
    {
    if (!e.MoveNext() || e.Current != '}')
    throw new FormatException();
    result.Append('}');
    }
    else
    {
    result.Append(ch);
    }
    }

    return result.ToString();
    }

    private static string OutExpression(object source, string expression)
    {
    string format = "{0}";

    int colonIndex = expression.IndexOf(':');
    if (colonIndex > 0)
    {
    format = "{0:" + expression.Substring(colonIndex + 1) + "}";
    expression = expression.Substring(0, colonIndex);
    }

    try
    {
    return DataBinder.Eval(source, expression, format) ?? string.Empty;
    }
    catch (HttpException)
    {
    throw new FormatException();
    }
    }
    }

    }

    ===============

    MembershipUser user = Membership.GetUser();

    "{UserName} last logged in at {LastLoginDate}".FormatWith(user);

    output===》 njwu last logged in at 2010年1月6日08:07:39

    =============

    "{CurrentTime} - {UrL}".FormatWith(new { CurrentTime = DateTime.Now, url = "http://hi.baidu.com/handboy" });

    output==》2010年1月6日08:07:39 - http://hi.baidu.com/handboy

    ===================

    "{{{UserName}}} last logged in at {LastLoginDate}".FormatWith(user);

    output==> {njwu} last logged in at 2010年1月6日08:07:39

    ================

    Console.WriteLine("{date:yyyy-MM-dd},{url}".FormatModel(new { date = DateTime.Now, url = "http://hi.baidu.com/handboy" }));

    output==> 2011-06-26,http://hi.baidu.com/handboy

    ==================

  • 相关阅读:
    无声的吐槽csdn
    成长
    最近忙的头发都油油的
    pycharm5工具免费分享及安装教程
    分布式版本控制git常见问题之gitignore冲突
    感觉自己还是太年轻,还有很多东西不会
    关于laravel5.2仓库的建立,以及简单调用
    乎,前所未有的挑战!
    嘿嘿,无聊的时候,来点好玩的,翻滚吧,杀马特!!!
    随便说说
  • 原文地址:https://www.cnblogs.com/handboy/p/7182584.html
Copyright © 2011-2022 走看看