c#和JS字符串format实现(可实现JSON对象,c#实体对象,C#匿名对象,替换)
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);
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。