java试图读取文件并将其拆分为单词,然后将这些单词存储在arrayList中
在我的代码中,当我要打印列表时,会返回一行,我不知道如何删除它,例如,如果我的文件包含这些行:
我想不出什么东西可以写
诸如此类的废话
当我打印出我的列表时,我得到了以下信息:
{我不能、想、想、写任何东西
废话,废话,废话
这是我的代码:
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>() ;
try(BufferedReader br = new BufferedReader(new FileReader("test.txt"));){
int i = 0;
String str = " ";
while((i = br.read()) != -1){
str += (char) i;
if( (char) i == ' '){
list.add(str.toString());
str = " " ;
}
}
list.add(str.toString());
}catch (Exception e){
System.out.println("there is an exception ");
}
printArrayList(list);
}
public static void printArrayList(ArrayList<String> list){
System.out.print("{");
for(int i = 0; i<list.size(); i++){
if (i > 0)
System.out.print("," + list.get(i));
else
System.out.print(list.get(i));
}
System.out.print("}");
}
# 1 楼答案
这种情况之所以发生,是因为当你找到一个空格
if( (char) i == ' ')
时,你只是在拆分句子。如果您还想在新行上拆分,请使用if ( (char) i == ' ' || (char) i == '\n')
注意:
\n
不是所有平台中的行分隔字符。好吧,它可以是\n
或\r
或\r\n
中的任何一个# 2 楼答案
你反对导入库吗?ApacheStringUtils有一个方法,可以在空格上拆分,并返回令牌中的所有其他内容
https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#split%28java.lang.String%29