标题:[求助]一道正则表达试的IO题
只看楼主
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
我终于发现了,你的代码写错了,

应该是

[CODE]public void read() //读文件
{
String strIn;
try
{
while((strIn = br.readLine())!=null)
{
strIn=strIn.replaceAll("\u3000"," ");
Matcher m = Pattern.compile("\\d\\s+").matcher(strIn);
while(m.find())//是while而不是if,并且你的写出也经移到全部配完之后
{
String out = m.group();
strIn = strIn.replaceFirst(out,out.trim()+",");
System.out.println(strIn);
// toFormatIp(strIn);
}
write(strIn);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}[/CODE]

可惜不是你,陪我到最后
2007-01-30 23:46
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
以后可要小心哦,我给你的示例都是while循环,你却用的是if


可惜不是你,陪我到最后
2007-01-30 23:47
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 

哦,这里错啦....太感谢了..
我一般都是贴子上看会了,然后自己去试着编一遍..是我太马虎了..

谢谢,千里,超级丈义.........


我在说's blog   http://www..cn
2007-01-30 23:54
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 

你可以正确输出了吗?我好像还是有问题..


我在说's blog   http://www..cn
2007-01-30 23:56
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 
没问题!我看错文件了.........

SORRY!

谢谢千里~~~~~

赶紧睡觉吧..都12点了..明天你还上班呢..

我在说's blog   http://www..cn
2007-01-30 23:57
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 
以下是引用千里冰封在2007-1-30 23:46:15的发言:
我终于发现了,你的代码写错了,

应该是

[CODE]public void read() //读文件
{
String strIn;
try
{
while((strIn = br.readLine())!=null)
{
strIn=strIn.replaceAll("\u3000"," ");
Matcher m = Pattern.compile("\\d\\s+").matcher(strIn);
while(m.find())//是while而不是if,并且你的写出也经移到全部配完之后
{
String out = m.group();
strIn = strIn.replaceFirst(out,out.trim()+",");
System.out.println(strIn);
// toFormatIp(strIn);
}
write(strIn);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}[/CODE]

再请问一下,这里的write在while里面和在外面有什么区别吗?
当然结果是一个正确一个错误了..
可是从表面看上去,都是把更改后的strln写入文件呀..


我在说's blog   http://www..cn
2007-01-30 23:59
千里冰封
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:灌水之王
等 级:版主
威 望:155
帖 子:28477
专家分:59
注 册:2006-2-26
得分:0 
以下是引用limaoyuan在2007-1-30 23:59:30的发言:

再请问一下,这里的write在while里面和在外面有什么区别吗?
当然结果是一个正确一个错误了..
可是从表面看上去,都是把更改后的strln写入文件呀..

当然有区别
在while 外面就表示全部匹配和替换都完成了,再把这条写入文件

而在里面的时候,就每次匹配一条都会写入一次,就会造成生成的文件比源文件还大,正常情况下应该是比源文件小的

关键在于:它是否已经全结匹配替换了


可惜不是你,陪我到最后
2007-01-31 00:10
limaoyuan
Rank: 1
等 级:新手上路
帖 子:493
专家分:0
注 册:2006-6-25
得分:0 
了解了,果然是这样的.........谢谢

我在说's blog   http://www..cn
2007-01-31 13:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-118845-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.059245 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved