我正在读取每行包含一个单词的txt文件,从非字母数字字符中删除该单词并将结果存储到数组列表中。
public class LeeArchivo
{
public static void main(String args[]) throws IOException
{
try
{
BufferedReader lector = null;
List<String> matrix = new ArrayList<String>();
lector = new BufferedReader(new FileReader("spanish.txt"));
String line = null;
while((line = lector.readLine())!=null)
{
//matrix.add(line);
matrix.add((line.split("[^a-zA-Z0-9']").toString()));
}
System.out.println(matrix);
System.out.println(matrix.size());
} catch (IOException e)
{
e.printStackTrace();
}
}
}
当我尝试打印ArrayList的内容时,我得到的是每个String Object的内存地址。有趣的是,如果我不分割线即:我只是matrix.add(线)我得到了Strings Ok。 我已经尝试过StringBuilders,Iterators,.toString,但没有任何作用。 有人可以帮我理解这里发生了什么吗? 感谢。
答案 0 :(得分:0)
line.split("[^a-zA-Z0-9']")
调用返回一个String数组。不是字符串。
因此,您不是在数组列表中添加String实例,而是在String数组对象toString()方法调用的结果 - String数组对象的内存地址。
如果你需要在拆分后得到整个字符串,你应该连接所有字符串 数组的元素,例如:
while((line = lector.readLine())!=null) {
String[] arr = line.split("[^a-zA-Z0-9']");
String res = "";
for(String s : arr) {
res += s;
}
matrix.add(res);
}