为什么结果不是预期 大虾请指教 谢谢
这是我写的用字符流读文件的两个方法。。读的文件是这样的
, ./!+-*/%()[]{}$ <> <> <>
\> < :; ' "
文件第一行第二个字符是空格,第二行第四个字符是制表
我的目的是干掉所有的空格类字符,然后把文件读成一个StringBuffer字符串,但是结果不是我的预期,在干掉第一行末尾的换行之后 第二行的字符直接刷在了字符串的开头几个位置。运行结果如下
\> < :; ' "]{}$ <> <> <>
但是他的长度确在不断的增加。。
n===34
这是我想不明白的地方。。。
实现代码是下面的
下面是两个方法 望高手指教 ~!! 谢谢
public void lexer(File newfile)
{
try{
FileReader in=new FileReader(newfile);
int n=0;
Character a= '0 ';
//char a= '0 ';
StringBuffer s=null;
while((n=in.read())!=-1)
{
a=(char)n;
if(a.compareTo( ' ')==0||a.compareTo( '\n ')==0||a.compareTo( '\t ')==0)
{
System.out.println( "a=== "+a);
}
else
{
s=link(s,a);
}
System.out.println(s);
}
in.close();
}
catch(
IOException e){
System.out.println(e);
}
}
public StringBuffer link(StringBuffer s1,Character newa)
{
String s2=Character.toString(newa);
StringBuffer s3=new StringBuffer(s2);
if(s1==null)
{
s1=s3;
}
else
{
s1=s1.append(s3);
}
System.out.println(s1.length());
//System.out.println(s1);
return s1;
}
------解决方案--------------------用正则表达式吧!
贴一下你的输入和你期望的输出。
------解决方案--------------------在windows中,换行符是\r\n
这里if(a.compareTo( ' ')==0||a.compareTo( '\n ')==0||a.compareTo( '\t ')==0) 应该再加上一个条件:a.compareTo( '\r ')
------解决方案--------------------mark