字符串占位符的三种解决方案及其时间性能对比

简述:

   最近在做Android性能优化的问题,看到之前在解决API接口问题时使用了占位符,本篇博客就来总结一下目前常用的三种解决方案,然后就三种方案的时间性能做一下对比。


字符串占位符的三种方案:

   1、使用MessageFormat.format方法      

      MessageFormat.format方法从 JDK 5 开始支持变参,可以直接用逗号添加参数。使用如下:

	/**
	 * @方法描述:使用MessageFormat.format
	 * @author lizhenya
	 */
	public static void method1(String... str) {
		String originalData = "我是一名{0},我喜欢打{1}";
		String format = MessageFormat.format(originalData, str);
		
	}


2、使用String.format方法

      想必String.format来处理占位符问题是大多数程序员最常用也是最容易想到的方法,它的使用简单,如下

        public static void method2(String str) {
		String originalData = "我是一名%1s";
		String format = String.format(originalData, str);
	}

3、使用正则表达式

      由于正则表达式晦涩难懂,所以这种方式经常被忽略,使用如下:

        public static void method3(String[] str) {
		String originalData = "我是一名{0},我喜欢打{1}";
		String fillStringByArgs = format(originalData, str);
	}

	private static String format(String str, String[] arr) {
		Matcher m = Pattern.compile("\\{(\\d)\\}").matcher(str);
		while (m.find()) {
			str = str.replace(m.group(), arr[Integer.parseInt(m.group(1))]);
		}
		return str;
	}

时间性能的对比:

     时间性能由优到劣:方案三===》方案一===》方案二。

     利用上面的代码我做了一下耗时的对比,下面是其中一次控制台输出信息:     

方案一:我是一名台球爱好者,我喜欢打中式八球
方案一耗时:1ms
---------------------------
方案二输出信息:我是一名台球爱好者
方案二耗时:20ms
---------------------------
方案三输出信息:我是一名台球爱好者,我喜欢打中式八球
方案三耗时:0ms

当然一次测试具有偶然性,大家可以多次测试一下,最终可得出上述的结论。


上述过程中用到的Demo下载:Demo下载

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值