繁体   English   中英

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

[英]Read one-line text file, split to array

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

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));

这是因为"\\\\\\\\"被解析为\\\\并且split方法使用正则表达式,因此\\\\正在成为\\ ,然后Sebastien 5000\\\\Loic 5000将导致[Sebastien 5000,,Loic 5000]

这样做: "\\\\\\\\\\\\\\\\"

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

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

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

两个连续的非单词字符:

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

连续两个标点符号:

String[] scores = line.split("\\p{Punct}{2}");

所有这些都产生了所需的输出。

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

我会比尼克走得更远:

line.split("\\\\\\");

这个视图假设你试图在出现双反斜杠的每个点处拆分行 - 看起来你的代码在每个备用双斜杠处分裂,这将解释每个名称之间的双逗号; 因此,在每个分割部分之间(即逗号之间的每个部分,有两个条目而不是一个,因此一个条目仅仅是一个逗号)。 看看这是否有效 - 祝你好运!

M.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM