基于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