java - String.fomat通用方法如何编写?
怪我咯
怪我咯 2017-04-18 10:29:51
[Java讨论组]

是这样的。

我用字符串定义异常信息,通常会包含多个 %s 。

然后我 用 String.format 来处理%s的意义

首先谢谢楼下的评论,抱歉各位,我讲的不是太清楚,我再仔细讲一下,我知道format是 变参。以下用实际例子来说明问题:

(1)我想编写一个通用方法,可接收多个参数,str是要匹配的字符串,args是参数列表

(2)我使用这个方法
getReturnMsg("%s already existing, %s taken","name1", "name2")
把参数传递进去!

(3)结果出错了

Format specifier '%s'

问题:原因应该是在fomat的时候只匹配了"name1",后面%s没匹配到就结束了,所以抛出错误,所以我应该怎样改写我的通用方法来适应多个参数呢???

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
巴扎黑

你这个用不定参数类型可以解决,看一下String类的源码就知道了:

String format(String format, Object... args)
PHP中文网

format 格式化字符串是预定义的,那也就是说在定义时就已经确定了参数的限制。所以使用时必须传递相对应的参数这是java.util.Formatter实现。

如果你想实现,即使参数不存在也能够正确输出或者默认输出,那你可以使用template模板技术或者placeholder占位符。
freemarker
velocity

org.apache.commons.lang3.text.StrSubstitutor

 Map valuesMap = HashMap();
 valuesMap.put("animal", "quick brown fox");
 valuesMap.put("target", "lazy dog");
 String templateString = "The ${animal} jumped over the ${target}.";
 StrSubstitutor sub = new StrSubstitutor(valuesMap);
 String resolvedString = sub.replace(templateString);
天蓬老师
public static String format(String format, Object... args)

String.format的方法签名,第二个本身就是变参啊,可以传一个、多个或者0个。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号