Java 和JavaScript实现C#中的String.format效果
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;
}
Java 和JavaScript实现C#中的String.format效果的更多相关文章
- Java 实现C#中的String.format效果 解决("我是{0},今年了","whaozl") bug
/** * 需要引入com.alibaba.fastjson.1.2.8 * 两种调用方式 * String template1="我是{0},今年{1 ...
- php示例代码之类似于C#中的String.Format方法
php示例代码之类似于C#中的String.Format方法 原文来自于 http://stackoverflow.com/questions/1241177/c-string-format-equ ...
- java中的String.format使用
format(String format, Objece... argues)函数相当于C语言中的printf函数,但是相对来说更灵活. 和C中的printf函数差不多,在fo ...
- Javascript中的String.format方法实现
<script type='text/javascript'> String.format = function() { var s = arguments[0]; for (var i ...
- C#中的String.Format方法(转)
一.定义String.Format是将指定的 String类型的数据中的每个格式项替换为相应对象的值的文本等效项. 如: (1)string p1 = "Jackie";strin ...
- C#中的String.Format方法
定义String.Format是将指定的String类型的数据中的每个格式项替换为相应对象的值的文本等效项.(1)string p1="xiaomeng";string p2=&q ...
- C#中的String.Format介绍
关键字:C# string.format作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/15/csharp-string_for ...
- js中的string.format
String.prototype.format = function(args) { var result = this; if (arguments.length > 0) { if (arg ...
- Jquery 中使用String.Format
第一种方法: String.format = function() { if (arguments.length == 0) return null; var str = arguments[0]; ...
随机推荐
- POJO是什么,javabean是什么,以及POJO与javabean的区别
POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称.使用POJO名称是为了避免和EJB混淆起来, 而 ...
- Xcode8.1 真机测试 ,添加iOS10.3的idk到Xcode8.1中
1.下载iOS10.3的idk包; 2.解压, 找到路径 Finder -> 应用程序 -> 右键Xcode -> 显示包内容 -> Contents -> Develo ...
- "美团"APP学习记录知识点
1.APP进入加载广告视图展示: -(void)initAdvView{ // 判断图片是否已经存在 NSArray *paths = NSSearchPathForDirectoriesInDoma ...
- redis的坑
1.外网无法连接redis 解决方法: 把redis.conf里的bind 127.0.0.1注释掉,不行的话把127.0.0.1修改成0.0.0.0 2.make的时候显示没有gcc 解决方法: 安 ...
- python selenium API 常用方法
配置使用环境 下载相应的浏览器驱动, Firefox 是默认的 本文以 chrome 为主 ,放在scripts目录下ChromeDriver 官方下载地址 : 所有版本的 ChromeDriver ...
- NOIp2017D1T2 时间复杂度【模拟】
说一说 题目分析请从目录空降... 没想到模拟题还会卡这么久...菜得真实... 这是一个励志的故事:从$0pts->9pts->18pts->27pts->36tps-> ...
- 纯Js ——文字上下左右滚动
ScrollBaseJs.js var $$ = function (id) { return typeof id == 'string' ? document.getElementById(id) ...
- JAVA第四周总结
Java实验报告二 第一题 写一个名为Rectangle的类表示矩形.其属性包括宽width.高height和颜色color,width和height都是double型的,而color则是String ...
- Rsyslog收集应用日志
收集系统其它服务日志,在客户端node1 上操作,示例以openstack-nova 服务的日志为例: 1.先修改配置文件 /etc/rsyslog.conf,完整内容如下: [root@node1 ...
- TCP/IP 物理层卷四 -- 数据报与虚电路
一.数据报(Datagram) 1.1 概念 数据报是分组交换的一种,主要向通信子网中的端系统提供无连接的分组交换服务.通信子网的某主机发送一个报文时,无需建立连接,只需在实现高层协议的前提下对数据拆 ...