BufferedReader里面的readline是以\t或\n来判断读取完一行..
但我txt文本一行里面有不规则的空格数..怎么读完到一行最后再换行呢?
例如:111 2000    3000   40000 5555      60000
222 3330    4000   55553 5343      34534我想读完一行再一行..但readline好像不行!请问各位什么方法读取数据..然后截取出保存到数组里..
我以String[] s = str.split("\\s");正则来读取不行..
用String[] s = str.split(" ");读取,然后s[0].trim();这样也不行!
还有其他办法吗??好急..请各位高手支招!谢谢............

解决方案 »

  1.   

    你试一下用这个
     string[] lines = str.Split(new char[] { '\r', '\n' });
      

  2.   


    这是什么意思啊?我直接报错喔..!不能用char[]
      

  3.   

    再试一下这个。
    string[] lines = str.Split('\r')
      

  4.   

    或者这个
    string[] lines = pasteText.Split('\r')
      

  5.   

    写错了:
    string[] lines = pasteText.Split('\n')
      

  6.   

    试试
    replaceAll(" ", "")
      

  7.   

    .replaceAll("\r", "\n").replaceAll("\n\n", "\n")
      

  8.   

    .replaceAll("\r", "\n").replaceAll("\n\n", "\n").split("\n");
      

  9.   

    如果是这样的话,你只能按字节读了。
    读出来的字节转换成String。然后再判断是否包含\n。如果有,则\n后面的内容作为新的一行。
    好像也不难吧。
      

  10.   

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;public class SearchIf {    private BufferedReader br = null;    public SearchIf() {
        }
        public String[] readFile(File file) {        String line = "";
            String trimLine = "";
            String strAll = "";
            String strArr[] = null;        try {
                br=new BufferedReader(new InputStreamReader(new FileInputStream(file)));            while((line = br.readLine()) != null) {
                    trimLine = line.trim();
                    strAll = strAll + trimLine + " ";
                }            strArr = strAll.split("\\s+");        } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    System.out.println(strAll);
            return strArr;
        }    public static void main(String[] args) {
            String[] strArr = new SearchIf().readFile(new File("D:\\t.txt"));
            for(int i=0; i<strArr.length; i++) {
                System.out.println(strArr[i]);
            }
        }
    }
    以上是完整列子,匹配未定数目的空格只要“\\s*”这样加个*表示空格出现一次或多次。
      

  11.   

    谁说readline是以'\t'为分割单位?
    line--行,在windows里面分行符是'\r\n',unix里面分行符是'n'
      

  12.   


    public class DataInputTest {
    public static void main(String[] args){
    try {
    BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream("d:/1.txt")));
    String str;
    List<Integer> list=new ArrayList<Integer>();
    while((str=br.readLine())!=null){
    Pattern p=Pattern.compile("\\d+");
    Matcher m=p.matcher(str);
    while(m.find()){
    Integer i=Integer.parseInt(m.group());
    list.add(i);
    }
    }
    System.out.println(list.toString());
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
      

  13.   

    #14楼的代码作稍稍修改后终于解决了我的问题了...感谢jianglin543和其他高手帮助...感激感动..!
      

  14.   

    javadoc里说是\t或者换行。具体还真是没试过……