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 + "\\}", "g"), 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);

    原文地址:https://blog.51cto.com/317057112/2427053

    时间: 2024-11-08 17:44:18

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

    从js的repeat方法谈js字符串与数组的扩展方法

    js将字符串重复N次的repeat方法的8个版本 /* *@desc: 将一个字符串重复自身N次 */ //版本1:利用空数组的join方法 function repeat(target, n) { return (new Array(n + 1)).join(target); } //版本2:之所以要创建一个带length属性的对象 是因为要调用数据的原型方法,需要指定call的第一个参数为类数组对象 //类数组对象的必要条件是其length属性的值为非负数 function repeat(t

    JavaScript字符串Format

    一直用C#编程,在日常字符串拼接中string.Format()一直是个很好用很常用的方法,不用自己+++,既影响开发效率也影响可读性 然而在js中并没有这样的函数可供使用,so整理了一个js的字符串format函数供项目的日常使用 虽然并不是很完善也不能提升拼接效率,但是足够满足开发过程中的工作效率和可读性 通过String类型的原型prototype新增一个format方法,方便使用 String.prototype.format = function () { if (arguments.

    substr.js 字符串切割

    substr.js 字符串切割 GitHub 以一个中文字的宽度为一个单位进行字符串切割 substr('南拳的妈妈1992', 4) // => 南拳的妈... substr('imlianer.com', 4) // => imlianer... substr('倒霉熊1992', 4) // => 倒霉熊19... substr('小红', 4) // => 小红 原文地址

    jquery过滤特殊字符及js字符串转为数字

    //替换特殊字符 $(this).val($(this).val().replace(/[~'!<>@#$%^&*()-+_=:]/g, "")); 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才能正确运行:对其他类型返回的都是NaN(Not a Number). 一些示

    JS的全局函数eval解析JSON字符串函数

    JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String

    0003.js字符串操作

    通过 + 连接符拼接字符串: var str1 = "hello"; str1 = str1 + " javaScript"; document.write(str1); 或者: var str1 = "hello"; str1 += " javaScript"; document.write(str1); 输出:hello javaScript 要在字符串中添加换行符,需要使用转义字符"\n",但这种方法

    Python 的格式化字符串format函数

    阅读mattkang在csdn中的博客<飘逸的python - 增强的格式化字符串format函数>所做笔记 自从python2.6开始,新增了一种格式化字符串的函数str.format(),他通过{}和:来代替%. 1.映射实例 In[1]: '{0},{1}'.format('abc', 18) Out[1]: 'abc,18' In[2]: '{}'.format(18) out[2]: 18 In[3]: '{1},{0},{1}'.format('abc', 123) out[3]:

    js字符串函数

    JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a.concat(b);alert(c);//c = "hello,world"indexOf返回字符串中一个子串第一处出现的索引(从左到右搜索).如果没有匹配项,返回 -1 .var index1 = a.indexOf("l");//index1 = 2var ind

    js 字符串转换成数字的三种方法

    在js读取文本框或者其它表单数据的时候获得的值是字符串类型的,例如两个文本框a和b,如果获得a的value值为11,b的value值为9 ,那么a.value要小于b.value,因为他们都是字符串形式的.在网上找了一下js字符串转数字的文章,这个比较全 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把值转换成浮点数.只有对String类型调用这些方法,这两个函数才