簡體   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