2016-09-22 94 views
-4

剛剛接觸java! 我想刪除一個文件中的重複行,但我需要保持線,更數的大寫字母如何從文本文件中刪除重複的行

,可以使用哪些功能,如果文本文件包含下列單詞來實現這一

輸入

汽車

的BU

總線

自行車

預期輸出

的BU

自行車

+2

[在使用Java文件刪除重複的行]的可能的複製(http://stackoverflow.com/questions/996041/deleting -duplicate-in-a-file-using-java) – DimaSan

+0

@DimaSan這不僅僅是在你的鏈接中回答 - 「_,但我需要保留更多數量的大寫字母_」。 –

回答

-1

試試這個。

static class Str { 

    final String origin; 
    final int uppers; 

    Str(String origin) { 
     this.origin = origin; 
     this.uppers = (int)origin.chars() 
      .filter(Character::isUpperCase) 
      .count(); 
    } 
} 

public static List<String> uniq(String file) throws IOException { 
    Path path = Paths.get(file); 
    List<String> lines = Files.readAllLines(path); 
    Map<String, Str> map = new LinkedHashMap<>(); 
    for (String e : lines) { 
     Str n = new Str(e); 
     map.compute(e.toLowerCase(), 
      (k, v) -> v == null || n.uppers > v.uppers ? n : v); 
    } 
    return map.values().stream() 
     .map(s -> s.origin) 
     .collect(Collectors.toList()); 
} 

System.out.println(uniq("test.txt")); 

結果:

[CaR, BUs, bike] 
+0

Pefect回答正在尋找什麼 – Gpn008

-2

你可以先閱讀文本文件和文本的每一行存儲串

的列表,然後你可以使用

str1.equalsIgnoreCase(STR2);

來比較字符串

如果返回true,就忽略這個文本

+0

「_,但我需要保留更多數量的大寫字母的行_」... –

+0

但我需要保留更多數量的大寫字母(您從來沒有在原始問題中提及此行)的行數是什麼意思這就是我告訴你根據你的問題嘗試,如果你不明白英語,那麼你的問題是正確的,然後告訴我() –

+0

1)我沒有提出這個問題 - 我不知道你爲什麼要像我一樣對我說話。 2)原始問題包含此確切的行 - 請參閱http://stackoverflow.com/revisions/39639481/1 –