Java 实现C#中的String.format效果 解决("我是{0},今年了","whaozl") bug
/**
* 需要引入com.alibaba.fastjson.1.2.8
* 两种调用方式
* 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写法
* 两个结果都是"我是loogn,今年22了"
* arguments[0].getClass().getName() == String.class.getName()
*/
public static String format(String str, Object ... arguments) {
if(arguments.length>0){
if(arguments.length==1 && arguments[0] instanceof String){//{name:"loogn",age:22}
try{
@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());//注意正则写法
}
}catch(Exception e){//解决 ("我是{0},今年了","whaozl") bug
str = str.replaceAll("\\{0\\}", arguments[0].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);
}
Java 实现C#中的String.format效果 解决("我是{0},今年了","whaozl") bug的更多相关文章
- Java 和JavaScript实现C#中的String.format效果
1.Java实现 /** * 需要引入com.alibaba.fastjson.1.2.8 * String result2=HuaatUtil.format(templa ...
- php示例代码之类似于C#中的String.Format方法
php示例代码之类似于C#中的String.Format方法 原文来自于 http://stackoverflow.com/questions/1241177/c-string-format-equ ...
- SpringBoot整合Swagger2案例,以及报错:java.lang.NumberFormatException: For input string: ""原因和解决办法
原文链接:https://blog.csdn.net/weixin_43724369/article/details/89341949 SpringBoot整合Swagger2案例 先说SpringB ...
- java中的String.format使用
format(String format, Objece... argues)函数相当于C语言中的printf函数,但是相对来说更灵活. 和C中的printf函数差不多,在fo ...
- js中String.prototype.format類似于.net中的string.formitz效果
String.prototype.format = function(args) { if (arguments.length>0) { var result = this; if (argum ...
- 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 ...
- java字符串格式化性能对比String.format/StringBuilder/+拼接
String.format由于每次都有生成一个Formatter对象,因此速度会比较慢,在大数据量需要格式化处理的时候,避免使用String.format进行格式化,相反使用StringUtils.l ...
随机推荐
- subprocess.call 使用
1.subprocess.call 里面的命令分开写,实例如下: subprocess.call 是不能作为赋值的,需要用到 subprocess.check_output 函数,而且如果要引用赋值就 ...
- SqlServer:SqlServer(数据库备份,数据文件迁移,增加数据库文件组,递归查询一周报送情况,查询近X天未报送单位,截断数据库日志,复制单个或多个数据库表到另一个数据库 )
1.数据备份 ) ) ) )),'-','') ) SET @savePath = 'f:/DatabaseBackup/' DECLARE My_Cursor CURSOR FOR ( select ...
- Tensorflow 从文件中载入训练数据
本节包含: 用纯文本文件准备训练数据 加载文件中的训练数据 一.用纯文本文件准备训练数据 1.数据的数字化 比如,“是” —— “1”,“否” —— “0” “优”,“中”,“差” —— 1 2 3 ...
- CRLF、CR、LF详解
名词解释 CR:Carriage Return,对应ASCII中转义字符\r,表示回车 LF:Linefeed,对应ASCII中转义字符\n,表示换行 CRLF:Carriage Return &am ...
- 编译安装MySQL数据库
1. 安cmake工具 # yum install -y cmake 2. 创建mysql用户 # useradd -M -s /sbin/nologin mysql 3. 创建数据目录 # mkdi ...
- 修改linux内核启动顺序
修改linux内核启动顺序 # 修改内核启动顺序x86_64 centos:cat /boot/grub2/grub.cfg |grep "menuentry" grub2-set ...
- 编译FFMPEG错误对策
在MINGW32下编译ffmpeg-2.1.1.tar.bz2 step1: ./configure --prefix=/home/Administrator/install --extra-cf ...
- 第七次java实验报告
Java实验报告 班级 计科二班 学号20188437 姓名 何磊 完成时间 2019/10/25 评分等级 实验四 类的继承 实验内容 )总票数1000张:(2)10个窗口同时开始卖票:(3)卖票过 ...
- JAVA实验三及总结
JAVA第五周作业 Java实验报告三 第一题 1.已知字符串:"this is a test of java".按要求执行以下操作:(要求源代码.结果截图.) (1).统计该字符 ...
- java8 stream多字段排序
注:转载请注明出处!!!!!!! 很多情况下sql不好解决的多表查询,临时表分组,排序,尽量用java8新特性stream进行处理 使用java8新特性,下面先来点基础的 List<类> ...