读取一行文本文件,拆分为数组

Posted

技术标签:

【中文标题】读取一行文本文件,拆分为数组【英文标题】:Read one-line text file, split to array 【发布时间】:2012-11-29 06:29:52 【问题描述】:

我正在从一个看起来像这样的文本文件中读取一长行信息:

Sebastien 5000\\Loic 5000\\Shubhashisshh 5000\\Thibaullt 5000\\Caroo 5000\\Blabla 5000\\Okayyy 5000\\SebCed 5000\\abusee 5000\\omg 5000\\

应该是用户名的高分。当我打印出该行时,它看起来完全一样,但是当我使用split("\\\\") 后打印出数组时,它看起来像这样:

[Sebastien 5000, , Loic 5000, , Shubhashisshh 5000, , Thibaullt 5000, , Caroo 5000, , Blabla 5000, , Okayyy 5000, , SebCed 5000, , abusee 5000, , omg 5000]

问题是Array[0] 很好,但Array[1] 是空的,Array[3]Array[5] 等也是如此。

这是我的代码。它有什么问题?

            BufferedReader in = null;
    try 
        in = new BufferedReader(new FileReader(path));
     catch (FileNotFoundException e) 
        e.printStackTrace();
    

    String line = null;
    try 
        line = in.readLine();
     catch (IOException e) 
        e.printStackTrace();
    
    System.out.println("LINE = "+line);

    String[] scores = line.split("\\\\");

    System.out.println("Mode = "+mode+Arrays.toString(scores));

【问题讨论】:

您使用的是line.split("\\\\"); 还是拼写错误?我想你需要line.split("\\\"); @NickD 它需要一个正则表达式,所以你需要"\\\\",它首先变成一个文字字符串\\,然后是一个文字\的正则表达式。 "\\\" 无法编译,因为它是未终止的字符串文字。 这不是一个错字,因为你必须转义 \ 一次以获得特殊字符,第二次因为它是一个字符串,如果我想拆分 \\ 我必须使用 \\\\ don'我? 您的代码对我来说运行良好。 【参考方案1】:

这是因为"\\\\"被解析为\\,而split method使用正则表达式,所以\\变成\,那么Sebastien 5000\\Loic 5000将导致[Sebastien 5000,,Loic 5000]

改为:"\\\\\\\\"

【讨论】:

非常感谢 :) 我永远不会发现自己 :p【参考方案2】:

为了好玩,除了 José Roberto 解决方案,您还可以使用一些替代表达方式(以及许多其他表达方式):

两个连续的反斜杠(与 José 相同,但使用量词):

String[] scores = line.split("\\\\2");

两个连续的非单词字符:

String[] scores = line.split("\\W2");

两个连续的标点字符:

String[] scores = line.split("\\pPunct2");

它们都产生所需的输出。

有关 Java 中的正则表达式的更多信息:

Class Pattern Javadoc Java tutorial on Regular Expressions

【讨论】:

【参考方案3】:

我会比尼克更进一步:

line.split("\\\");

此视图假定您尝试在出现双反斜杠的每个点拆分行 - 似乎您的代码在每个备用双斜杠处拆分,这可以解释每个名称之间的双逗号;因此,在每个拆分部分之间(即逗号之间的每个部分,有两个条目而不是一个,因此一个条目只是一个逗号)。看看这是否有效 - 祝你好运!

M.

【讨论】:

"\\" 在java中实际上是单斜杠,而对于正则表达式,这是一个转义字符,所以“\\\\”表示正则表达式中的单斜杠

以上是关于读取一行文本文件,拆分为数组的主要内容,如果未能解决你的问题,请参考以下文章

QT中怎样读取中文文本文件!

更新tkinter标签以在我的python GUI上一次显示一行文本文件

关于C语言中文本文件的逐行读取的实现

labview如何读取文本文档中某一行的字符串

打开多行文本文件并仅读取其中的特定行。并将值发送到文本框

delphi写多行文本文件操作