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

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

  • 相关阅读:
    Prof. Dr. Ligang Liu (刘利刚) 中国科技大学
    Chi-Wing FU, Philip
    LinuxROS与Android哪个重要?
    深圳市智汇机器人科技有限公司&环宇智行
    【泡泡机器人公开课预告】刘艺博-三维视觉与深度学习
    VS配置FFmpeg开发环境
    VS搭建Boost编程环境
    C++ 多线程编程解决CPU占用率高问题
    C++ 调节PCM音频音量大小
    C++ 采集音频流(PCM裸流)实现录音功能
  • 原文地址:https://www.cnblogs.com/handboy/p/7182584.html
Copyright © 2011-2022 走看看