专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » J2SE应用:JAVA语言有关字符串替换的研究 »正文

J2SE应用:JAVA语言有关字符串替换的研究

来源: 发布时间:星期一, 2009年2月23日 浏览:0次 评论:0

J2SE应用:JAVA语言有关串替换研究

最近在开发过程中用到了替换本来觉得挺简单问题却总也解决不了串明明是替换了却总也输出不了正确结果很是郁闷到底是为什么呢? JAVA中文站社区门户f9qBR%e s+h
先来看我代码: JAVA中文站社区门户*PDn`A+}%M
Newsdetialsnt=(Newsdetials)ntIter.next; JAVA中文站社区门户&Ab~#N6kx
.out.prln("新闻明细记录"+nt);
`eQ#rkB:V6DStringcontent=nt.getContent; JAVA中文站社区门户_9k:R.^R)`/f.j
.out.prln("新闻内容是:"+content); JAVA中文站社区门户 Tz+rP#a5w(o*t
//转换串中双引号为单引号 JAVA中文站社区门户T KV-Xl%x:_
content.replaceAll("\"","'"); JAVA中文站社区门户9@Qj~{8L
.out.prln("替换后传是:"+content); JAVA中文站社区门户m"R}H#rW
解释: JAVA中文站社区门户)C7l:hu#Ac3qH9?Q
前部分是通过迭代器来遍历新闻明细记录
{ vBzaZ9d(R4g[m)T%`^是想用双引号来替换掉串中单引号
;i x rKCm*A以上是我开始使用思路方法我输出结果是什么呢?也许你会和我当初想法相同?输出是替换后内容
fq~'`bG答案是错输出内容和其替换前内容相同明明替换了这是为什么呢?我也是好久都没找到答案
:_Ic,o"Eg} P个偶然机会让我实现了我实现如下: JAVA中文站社区门户(K{5n8B r:Y t t
Newsdetialsnt=(Newsdetials)ntIter.next;
(~0viV&W1ZB.out.prln("新闻明细记录"+nt);
2D#D y5w1O3[t8kStringcontent=nt.getContent; JAVA中文站社区门户wO,r)jR
.out.prln("新闻内容是:"+content);
x.s}ptv//转换串中双引号为单引号 JAVA中文站社区门户4U e!B _6d
Stringcontent0=content.replaceAll("\"","'");
,y5X;ZVJQAV.out.prln("替换后传是:"+content0);
EsE8P2d.@Zm解释:
y4x*K)lobT4W段代码看上去和前段相同但却实现了我 JAVA中文站社区门户V9a2|H.P

.YyyU&e)c/f3g我很是不解就看了下源代码才发现其中奥妙我们分析下上面两段:
] x wM-p y!fp a区别点是:后者将替换后串赋给了另串变量也就是说将替换后串取出而前者没有也就是这点导致了结果区别
a9j3^xe'Ev于是我就查看了其实现源代码:
5]8p6yA@.`i } [A@我们来看StringreplaceAll思路方法实现: JAVA中文站社区门户o6@$s sAE
publicStringreplaceAll(Stringregex,Stringreplacement){
"iSz#w.|Pattern.compile(regex).matcher(this).replaceAll(replacement);
y*u;q6F1n1{:v/Zl'ru0\} JAVA中文站社区门户cU Cfq _
我们可以看到其最终是了matcher(this).replaceAll(replacement)思路方法来实现我们看其是如何实现: JAVA中文站社区门户0nN:D KqP1kyL;W
publicStringreplaceAll(Stringreplacement){ JAVA中文站社区门户8T%Q\ Q7qV`
re; JAVA中文站社区门户iQWnHY6U
booleanresult=find;
z UT;^I5Wf~ D&a&E(result){
,g6Fy{;@fX1ZCJAVA中文站社区门户TAMhN
StringBuffersb=StringBuffer;
H.v6uHIG\JAVA中文站社区门户'g ? ^"@{K-z
do{
N;\ U ?7p#g)D3BappendReplacement(sb,replacement);
Ks+Dk w6W@$x zresult=find;
0]f |6KB-{#Vx}while(result); JAVA中文站社区门户P O.P?uVxg'x
appendTail(sb); JAVA中文站社区门户H/y;n\;oW
sb.toString; JAVA中文站社区门户/v0g5r_:@vX
} JAVA中文站社区门户%fq4cS&} E4PM
text.toString;
7P!R#U2aM+Y U"ju)s} JAVA中文站社区门户L&Up)G~ o E
JAVA中文站社区门户|UyFV[Lme
看这段代码让我们明白了切: JAVA中文站社区门户dQ'XD.@!s
我们知道在java中如果传递是对象那么是址传递所以让我们以为让原串替代后就可以了同时我们了该替代思路方法直接就修改了其串
sdaI!xHx上面代码告诉我们错了 JAVA中文站社区门户$_`LP/ag cD
粗体部分产生了个新对象:StringBuffer个例子而返回是他串值而不是原来content
FQkmG(H.P|到此你是否也弄明白了呢??


TAG: Java JAVA java 串替 应用 语言
标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: