java 姓名替换_Java字符串格式化,{}占位符根据名字替换实例

本文介绍了Java中如何使用{}占位符进行字符串格式化和姓名替换,包括通过Map和反射获取对象属性值的方法,提供了一系列示例代码。
摘要由CSDN通过智能技术生成

我就废话不多说了,大家还是直接看代码吧~

import java.beans.propertydescriptor;

import java.lang.reflect.method;

import java.util.hashmap;

import java.util.map;

import java.util.regex.matcher;

import java.util.regex.pattern;

public class stringformatutil {

private static final pattern pattern = pattern.compile("\\{(.*?)\\}");

private static matcher matcher;

/**

* 格式化字符串 字符串中使用{key}表示占位符

*

* @param sourstr

* 需要匹配的字符串

* @param param

* 参数集

* @return

*/

public static string stringformat(string sourstr, map param) {

string tagerstr = sourstr;

if (param == null)

return tagerstr;

try {

matcher = pattern.matcher(tagerstr);

while (matcher.find()) {

string key = matcher.group();

string keyclone = key.substring(1, key.length() - 1).trim();

object value = param.get(keyclone);

if (value != null)

tagerstr = tagerstr.replace(key, value.tostring());

}

}catch (exception e){

return null;

}

return tagerstr;

}

/**

* 格式化字符串 字符串中使用{key}表示占位符 利用反射 自动获取对象属性值 (必须有get方法)

*

* @param sourstr 需要匹配的字符串

*

* @return

*/

public static string stringformat(string sourstr, object obj) {

string tagerstr = sourstr;

matcher = pattern.matcher(tagerstr);

if (obj == null)

return tagerstr;

propertydescriptor pd;

method getmethod;

// 匹配{}中间的内容 包括括号

while (matcher.find()) {

string key = matcher.group();

string keyclone = key.substring(1, key.length() - 1).trim();

try {

pd = new propertydescriptor(keyclone, obj.getclass());

getmethod = pd.getreadmethod();// 获得get方法

object value = getmethod.invoke(obj);

if (value != null)

tagerstr = tagerstr.replace(key, value.tostring());

} catch (exception e) {

// todo auto-generated catch block

// loggers.addexception(e);

}

}

return tagerstr;

}

/**

* 格式化字符串 (替换所有) 字符串中使用{key}表示占位符

*

* @param sourstr

* 需要匹配的字符串

* @param param

* 参数集

* @return

*/

public static string stringformatall(string sourstr, map param) {

string tagerstr = sourstr;

if (param == null)

return tagerstr;

try {

matcher = pattern.matcher(tagerstr);

while (matcher.find()) {

string key = matcher.group();

string keyclone = key.substring(1, key.length() - 1).trim();

object value = param.get(keyclone);

if (value != null)

tagerstr = tagerstr.replace(key, value.tostring());

}

}catch (exception e){

return null;

}

return tagerstr;

}

/**

* 格式花字符串,按照占位符名字

* 输入:sourstr = xxxxx{a}xxxx{b} ,param = {a:a,b:b}

* 输出:targetstr = xxxxaxxxxb

* @param sourstr

* @param param

* @return

*/

public static string stringformat(string sourstr, jsonobject param) {

string tagerstr = sourstr;

if (param == null)

return tagerstr;

try {

matcher = pattern.matcher(tagerstr);

while (matcher.find()) {

string key = matcher.group();

string keyclone = key.substring(1, key.length() - 1).trim();

object value = param.get(keyclone);

if (value != null)

tagerstr = tagerstr.replace(key, value.tostring());

}

}catch (exception e){

return null;

}

return tagerstr;

}

public static void main(string[] args) {

// map map = new hashmap<>();

// map.put("id","111");

// map.put("sss","ss");

// jsonobject json = new jsonobject();

// json.put("id","212");

// json.put("fff","xxxx");

// json.put("emmmmm",11);

// stringformat("sisas&{fff}_diwahwi%{id}{jio}",json);

}

}

补充知识:java中占位符的使用

二话不说,先上代码

package com.string.format;

public class stringformat {

//占位符%s,拼接sql,删除两个表中的数据,条件是字符串数组类型的id

public static void formsql(string tablename,string tablename2,string...strings){

//sql占位符 %s占位符

string sql="delete from %s,%s where id in (%s)";

//声明新的字符串

string sqls="";

//遍历字符串的参数数组

for (string str : strings) {

//将参数数组拼接成字符串,用逗号分割

sqls += str + ",";

}

//拼接最后会多出个逗号,截取

sqls=sqls.substring(0, sqls.length()-1);

//format第一个sql参数为目标字符串,tablename,tablename2,为替换的两表的名字,sqls为删除数据的参数集合

string s=string.format(sql, tablename,tablename2,sqls);

//输出拼接后的sql

system.out.println(s);

}

public static void main(string[] args) {

//传入参数为指定表名,和参数值

stringformat.formsql("user","role", "1","3","5","7","9","33");

}

}

其实,传入的参数是数组类型的 值,我们也可以按array[0],array[1]的方式插入参数,只是参数个数应用不灵活,还是使用数组的方式取值比较好,

8168deef6ccf0bd921908c4865311cfa.png

public static void format(){

string st="%s的%s的价格是%f,是否售罄%c,占总销售的%d%%,库存%d,是否为畅销品%b";

string s=string.format(st, "58优品","啤酒",3.5,'是',50,199,true);

system.out.println(s);

}

public static void main(string[] args) {

//传入参数为指定表名,和参数值

//stringformat.formsql("user","role", "1","3","5","7","9","33");

format();

}

88a2e0e7e72ffc5a9c9b6ca659420635.png

public static void format(){

//string st="%s的%s的价格是%f,是否售罄%c,占总销售的%d%%,库存%d,是否为畅销品%b";

//string s=string.format(st, "58优品","啤酒",3.5,'是',50,199,true);

//system.out.println(s);

simpledateformat simple=new simpledateformat("yyyy年mm月dd日 hh点mm分ss秒");

string newdate=simple.format(new date());

string st1="%s的%s的价格是%s,是否售罄%s,占总销售的%s%%,库存%s,是否为畅销品%s,当前日期为%s";

string ss=string.format(st1, "58优品","啤酒","3.5",'是',"80","998","true",newdate);

system.out.println(ss);

}

public static void main(string[] args) {

//传入参数为指定表名,和参数值

//stringformat.formsql("user","role", "1","3","5","7","9","33");

format();

}

67e4d3120fd4fe477e0e56bb329c769b.png

/*%s字符串类型的占位符

* %c字符类型的占位符

* %b布尔类型的占位符

* %d整数类型的占位符

* %%百分比类型的占位符

* %n换行类型的占位符

* %t时间类型的占位符

* c全部的日期时间类型

* f年-月-日格式

* d年/月/日格式

* rhh:mm:ss格式12小时制

*

*/

以上这篇java字符串格式化,{}占位符根据名字替换实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值