日期:2014-05-20  浏览次数:21393 次

如何忽略BufferedReader的readLine()读到的中间多个空格

public static String[] readCmd() throws Exception
{
print("command>");
String str=br.readLine().trim();//忽略前导空白和尾部空白,中间的并没有滤掉
return str.split(" ");
}

command>  reserve  a  b   
name row col   bookNumber
=========================
     0   0     k99-0
a     0   1     k99-1
     0   2     k99-2
b     0   3     k99-3
command>
多读了两个空格
------最佳解决方案--------------------
可以得到数组后,继续对每个元素for循环进行trim操作,然后存进另一个数组,然后返回该数组。
------其他解决方案--------------------
最后拆分字符串的时候可以str.split("[ +]")
------其他解决方案--------------------
用这句试试:
String str=br.readLine().trim().replaceAll(" ","");

------其他解决方案--------------------
抱歉,2楼回答有误,没看清楼主的意思。
------其他解决方案--------------------
楼主改成下面的试一试
while((str=br.readLine())!=null){
splitStr(str);
//System.out.println(br.readLine());
}
public static void splitStr(String str){
String[] s;
str=str.trim();
s=str.split(" ");
/*for(Object o:s){//这里可以测试一下
System.out.println(o);
}*/
return s;
}
我文件里面的内容: grgr gregre greg gr  ;
输出结果:
grgr
gregre
greg
gr
长度为4
------其他解决方案--------------------
String[] temp=str.split("\\ +");

一个或多个空格匹配