亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java 將文本文件讀入流中并將其拆分

Java 將文本文件讀入流中并將其拆分

米琪卡哇伊 2021-06-01 16:12:14
我想用流讀取文本文件并將其保存到數組中。假設我的文本文件看起來像這樣; KommentarG40 K88 F32H38; noch ein KommentarB55H33 K34 Bla77現在我想要一個看起來像這樣的數組或數組列表G40K88F32H38B55H33K34Bla77所以我想刪除以“;”開頭的行 并在一個空格后拆分其他所有內容。我像這樣嘗試: List<String> list = new ArrayList<>();    try (Stream<String> stream = Files.lines(Paths.get(path))) {        list = stream                .filter(line -> !line.startsWith(";"))        //  .map(string -> list.split(" "))                .map(String::toUpperCase)                .collect(Collectors.toList());    } catch (IOException e) {        e.printStackTrace();    }    list.forEach(System.out::println);打?。篏40 K88 F32H38B55H33 K34 BLA77使用函數 .map(string -> list.split(" ")) 我會得到這個錯誤 The method split(String) is undefined for the type List<String>我是 Java 新手,經過數小時的搜索,我找不到答案。希望這里有人能給我一個提示。謝謝
查看完整描述

3 回答

?
哈士奇WWW

TA貢獻1799條經驗 獲得超6個贊

要分割線并創建包含其元素的流,請使用


line -> Stream.of(line.split("\\s+"))

//OR 

//line -> Arrays.stream(line.split("\\s+"))

這個 lambda 創建了Stream<String>但是如果我們將它與maplike 一起使用


map(line -> Stream.of(line.split("\\s+")))

我們會得到Stream<Stream<String>>。這不是我們想要的,因為我們不想“迭代”流,而是“迭代”它的元素。所以我們想要“扁平化”這個結構來得到Stream<String>.


這可以通過


flatMap(line -> Stream.of(line.split("\\s+")))


查看完整回答
反對 回復 2021-06-02
?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

對于多合一的解決方案,請嘗試:


Files.lines(Paths.get("your/file/path"))

     .filter(l -> !l.startsWith(";"))

     .flatMap(l -> Arrays.stream(l.split("\n")))

     .forEach(System.out::println);


查看完整回答
反對 回復 2021-06-02
  • 3 回答
  • 0 關注
  • 256 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號