Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于Java的文本操作_Java - Fatal编程技术网

基于Java的文本操作

基于Java的文本操作,java,Java,我有一个文本文档,格式如下: 80 Egypt 12 1 0 0 13 0 81 Qatar 7 4 1 1 13 0 我想逐行阅读,并存储国家名称和最高数字(始终是第5个数字) 但是,当我执行以下操作时,我会得到一个数组越界错误,因为它根本没有拆分行 String st; while ((st = br.readLine()) != null) { String[] temp = st

我有一个文本文档,格式如下:

80  Egypt           12  1   0   0   13  0
81  Qatar           7   4   1   1   13  0
我想逐行阅读,并存储国家名称和最高数字(始终是第5个数字)

但是,当我执行以下操作时,我会得到一个数组越界错误,因为它根本没有拆分行

     String st;
     while ((st = br.readLine()) != null) {

    String[] temp = st.split(" ");

     System.out.println(temp[1]);

     }
编辑: 原因是它们是选项卡而不是空格,可以通过以下方式进行修复:

st.replace("\t", "");

可能是文件中有制表符而不是空格,我没有足够的上下文,但根据我自己的经验,我猜您的文件中有一两行空行(最有可能是开头或结尾)。只需再次检查以确保最后一行有文本。br.readline()可能返回空字符串[]如果读取的是空行。

为了安全起见,需要检查空行,并按
\\s+
分割,因为这些行包含多个相邻空格。
如果有按
\\t+
拆分的选项卡:

String st;
while ((st = br.readLine()) != null) {
    st = st.trim();
    if (!st.isEmpty()) {
        String[] temp = st.split("\\s+");
        .........................
    }
} 

我该怎么做才能去掉制表符没有空行。如果我将其设为temp[0],那么它只会使用与原始输入相同的字符串进行响应。它不会根据空格拆分字符串。那么您可能在=before.trim()之后使用了错误的regex.string。replaceAll(“+”,“”);将删除所有重复的空格。然后您可以使用.split()原来它是一个空格而不是一个选项卡,谢谢您的时间,Roshan