Java 和JavaScript实现C#中的String.format效果
2024-10-07 03:24:07
1、Java实现
/** * 需要引入com.alibaba.fastjson.1.2.8 * String result2=HuaatUtil.format(template2, "{'name':'loogn','age':22}");//注意JSON写法 * 两个结果都是"我是loogn,今年22了" * arguments[0].getClass().getName() == String.class.getName() * 两种调用方式 * String template1="我是{0},今年{1}了"; * String template2="我是{name},今年{age}了"; * String result1=HuaatUtil.format(template1,"loogn",22); */ public static String format(String str, Object ... arguments) { if(arguments.length>0){ if(arguments.length==1 && arguments[0] instanceof String){//{name:"loogn",age:22} @SuppressWarnings("unchecked") Map<String, Object> map = (Map<String,Object>)JSON.parse(arguments[0].toString()); for(Map.Entry<String,Object> entry : map.entrySet()){ str=str.replaceAll("\\{" + entry.getKey() + "\\}", entry.getValue().toString());//注意正则写法 } }else {//"loogn",22); for(int i=0; i<arguments.length; i++){ if(arguments[i]!=null){ str = str.replaceAll("\\{" + i + "\\}", arguments[i].toString()); } } } } return str; } public static void main(String[] args) { String template1="我是{0},今年{1}了"; String template2="我是{name},今年{age}了"; String result1=HuaatUtil.format(template1,"loogn",22); String result2=HuaatUtil.format(template2, "{'name':'loogn','age':22}");//注意JSON写法 System.out.println(result1 + "\n" + result2); }
2、JavaScript实现(有参考,谢谢http://www.jb51.net/article/43701.htm,源头找不到了)
/** *两种调用方式 *var template1="我是{0},今年{1}了"; *var template2="我是{name},今年{age}了"; *var result1=template1.format("loogn",22); *var result2=template2.format({name:"loogn",age:22}); *两个结果都是"我是loogn,今年22了" */ String.prototype.format = function (args) { var result = this; if (arguments.length > 0) { if (arguments.length == 1 && typeof (args) == "object") { for (var key in args) { if (args[key] != undefined) { var reg = new RegExp("({" + key + "})", "g"); result = result.replace(reg, args[key]); } } } else { for (var i = 0; i < arguments.length; i++) { if (arguments[i] != undefined) { //var reg = new RegExp("({[" + i + "]})", "g");//这个在索引大于9时会有问题,谢谢何以笙箫的指出 var reg = new RegExp("({)" + i + "(})", "g"); result = result.replace(reg, arguments[i]); } } } } return result;
}
最新文章
- CUDA中Bank conflict冲突
- [LeetCode]题解(python):120 Triangle
- Dennis与Ken爷爷的UNIX/C世界
- Android学习笔记之使用百度地图实现路线规划+公交信息检索
- 【uoj2】 NOI2014—起床困难综合症
- iOS 工作遇到问题记录
- 简单的聊天程序,主要用到的是Socket
- Ios 给imageview 添加手势没有反应
- HTML基本概念
- 浅谈HTML5拖放
- 制作简易计算器处理过程Servlet
- MySQL各模块工作配合
- 将CSV文件写入MySQL
- 系统功能调用Windows操作系统原理实验
- 死锁的原因及解决办法RLock递归锁
- CPUFreq驱动
- WMS和WMTS的区别
- css 如何使图片与文字在div中居中展示?
- 20145310《网络对抗》注入shellcode及Return-to-libc
- iOS开发-多线程之GCD(Grand Central Dispatch)