c#和JS字符串format实现(可实现JSON对象,c#实体对象,C#匿名对象,替换)

  • 首先看一下JS实现方法,此方法在网上找的,具体地址忘了,代码如下:
  • String.prototype.format= function () {
            if (arguments.length == 0) return this;
            var param = arguments[0];
            var s = this;
            if (typeof (param) == ‘object‘) {
                for (var key in param)
                    s = s.replace(new RegExp("\\{" + key + "\\}","g"),param[key]);
                return s;
            } else {
                for (var i = 0; i < arguments.length; i++)
                    s = s.replace(new RegExp("\\{" + i + "\\}",arguments[i]);
                return s;
            }
        }

    javascript调用

    var str = "js实现用{two}自符串替换占位符{two} {three}  {one} ".format({one: "I",two: "lovE",three: "YOU"});
    var str2 = "js实现用{1}自符串替换占位符{1} {2}  {0} ".format("I","lovE","YOU");

    2.C#后台实现代码,下面方法自己写的;

    /// <summary>
            /// 字符串格式占位替换
            /// </summary>
            /// <param name="str">字符串</param>
            /// <param name="obj">替换对象(T,匿名对象,Newtonsoft.Json.Linq.JObject)</param>
            /// <returns></returns>
            public static string Format(string str,object obj)
            {
                if (str.Length == 0)
                {
                    return str;
                }
                string s = str;
                if (obj.GetType().Name == "JObject")
                {
                    foreach (var item in (Newtonsoft.Json.Linq.JObject)obj)
                    {
                        var k = item.Key.ToString();
                        var v = item.Value.ToString();
                        s = Regex.Replace(s,"\\{" + k + "\\}",v,RegexOptions.IgnoreCase);
                    }
                }
                else
                {
                    foreach (System.Reflection.PropertyInfo p in obj.GetType().GetProperties())
                    {
                        var xx = p.Name;
                        var yy = p.GetValue(obj).ToString();
                        s = Regex.Replace(s,"\\{" + xx + "\\}",yy,RegexOptions.IgnoreCase);
                    }
                }
                return s;
            }

    c#调用方法

    string ssew = "{one:‘I‘,two: ‘lovE‘,three: ‘YOU‘}";
                Newtonsoft.Json.Linq.JObject o2 = Newtonsoft.Json.Linq.JObject.Parse(ssew);
                string sew = CommonFunc.Format("{ONE} {TWO} {three}  ",o2);
    
                var ste = new { one = "I",two = "lovE",three = "You" };
                string ese = CommonFunc.Format("{ONE} {TWO} {three}  ",ste);

    相关文章

    目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
    目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
    本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
    C#中Description特性主要用于枚举和属性,方法比较简单,记录...
    [TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
    目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...