<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[Heck's  Blog]]></title> 
<link>https://www.heckjj.com/index.php</link> 
<description><![CDATA[一瞬间的决定，往往可以改变很多，事实上，让自己成功的往往不是知识，是精神！ 如果你总是为自己找借口，那只好让成功推迟。执行力，今天！]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[Heck's  Blog]]></copyright>
<item>
<link>https://www.heckjj.com/post//</link>
<title><![CDATA[ 字符串模版替换的方法MessageFormat.format()]]></title> 
<author>Heck &lt;@hecks.tk&gt;</author>
<category><![CDATA[编程杂谈]]></category>
<pubDate>Thu, 22 Jun 2017 07:49:31 +0000</pubDate> 
<guid>https://www.heckjj.com/post//</guid> 
<description>
<![CDATA[ 
	之前做了一个配置邮件和配置短信的模版，模版中需要替换很多参数，比方说“用户名”，“日期”等等。不过目前没有想到更好的替换参数的方法，所以目前只能使用一个比较简单的方式来实现。这个方式太死板，参数对应必须要在代码中写死，若是在模版中多加一个参数，那么就要修改Java类中的代码，非常不好。临时凑合一下，以后想到更好的方式，在来实现。以下为代码实现：<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实这个实现就是使用了MessageFormat这个类;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String content = "ab,cc,&#123;名称&#125;,&#123;密码&#125;,&#123;日期&#125;,dd,ff";<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String array[] = &#123;userName, password, format.format(new Date())&#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content = MessageFormat.format(content, array);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解释如下:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; content 中需要被替换的就是&#123;&#125;中的参数，array数组中存放的是对应的要替换的参数；使用MessageFormat方法的时候，需要要将这些参数的个数匹配正确，并且数序要指定，否则匹配出错。这样就实现了参数的替换。很简单，也很死板。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageFormat:出自java.text包中；<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大家可以自己打开jdk源代码读一下他的实现方式。<br/><br/><br/>Java里从来少不了字符串拼接的活，Java程序员也肯定用到过StringBuffer，StringBuilder，String.format以及被编译器优化掉的+=。但这些都和下文要谈的无关。<br/><br/>比如有这样的字符串：<br/><br/>张三将去某地点找李四。<br/><br/>其中，张三某地点和李四都是可变的，比如张三变成王五，某地点变成纽约，李四变成赵六。于是整句变成：<br/><br/>王五将去纽约找赵六。<br/><br/>如果直接将张三，某地点和李四用变量替代，再拼接起来，可以达到目的。但是，代码不好写，也不好看，也不好维护。但是，我看过很多SQL拼接，HTML拼接都是这样做的。我自己以前也是这样，自从接触了MessageFormat.format之后才意识到有更好的形式。请看下面的代码：<br/><br/>String[] tdArr=...;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>String result=MessageFormat.format("<tr bgcolor='#cef'><td>&#123;0&#125;</td><td>&#123;1&#125;</td><td>&#123;2&#125;</td><td>&#123;3&#125;</td></tr>", tdArr);<br/><br/>这段代码将把数组tdArr中的四个元素分别插入到&#123;0&#125;，&#123;1&#125;，&#123;2&#125;，&#123;3&#125;的位置。<br/><br/>你看看，是不是这样形式和内容有效的分开了。容易想象，当元素增多时，这种方式优势很明显。<br/><br/>一件事有很多手段来达成，知道那种手段更好，是你经验的体现和专业化的特征。
]]>
</description>
</item><item>
<link>https://www.heckjj.com/post//#blogcomment</link>
<title><![CDATA[[评论]  字符串模版替换的方法MessageFormat.format()]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>https://www.heckjj.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>