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

版权声明:欢迎转载,转载请注明出处 https://blog.csdn.net/u012810020/article/details/51872615

简述:

   最近在做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下载

展开阅读全文

没有更多推荐了,返回首页