問題背景:java
須要在一個法律文檔中查詢出全部的法律法規,格式相似《這樣滴》,找出文檔中全部《xx》數據(去除重複後的數據)。編程
固然,對於文檔中非法律法規,例如一本書的名字《wireshark網絡分析就這麼簡單》,就得人工的去除了,固然也能夠解決,不過在於本次問題,本程序就能夠解決了,手工就手工吧。網絡
案例:編程語言
賽先生最近讀了本《小王子》,不過他不喜歡《小王子》,他喜歡讀《C語言超高級編程》之類的書,而後他就去圖書館借了《C語言超高級編程》、《網絡爬蟲沒問題》、《治療脊椎病那些事》、《SinuxOS》,對於上面的書他是很是的喜歡。spa
程序輸出結果:code
《C語言超高級編程》
《網絡爬蟲沒問題》
《治療脊椎病那些事》
《小王子》
《SinuxOS》blog
解題思路:文檔
將全部文本copy到txt中,而後利用程序遍歷該文檔,每次讀一行,若該行存在‘《’則將該行中全部的‘《’開始到‘》’結尾的數據所有輸出(存放到list中)。以上只是對數據的查找,尚未去重處理,想到的是使用「HashSet(Java)」,進行數據去重。string
時間:io
估計時間:20分鐘
實際耗時:40+(緣由:1.很久沒寫了;2.Java處理中文問題;3. 去重問題;4.想找個現成的,修改花了點時間)
編程語言:Java
1 package textProcess; 2 3 import java.io.BufferedReader; 4 import java.io.File; 5 import java.io.FileReader; 6 import java.util.ArrayList; 7 import java.util.HashSet; 8 import java.util.List; 9 10 public class quChong { 11 static List<String> list = new ArrayList<>(); 12 13 public static void searchLine(File file) { 14 try { 15 BufferedReader br = new BufferedReader(new FileReader(file)); 16 String line = null; 17 while ((line = br.readLine()) != null) { 18 if (line.indexOf("《") != -1) { 19 addToList(line); 20 } 21 } 22 br.close(); 23 } catch (Exception e) { 24 e.printStackTrace(); 25 } 26 } 27 28 public static void addToList(String line) { 29 int i = 0; 30 String s = ""; 31 for (; i < line.length(); i++) { 32 s = ""; 33 if (line.charAt(i) == '《') { 34 while (line.charAt(i) != '》') { 35 s += line.charAt(i); 36 i++; 37 } 38 s += "》"; 39 // System.out.println(s); 40 } 41 list.add(s); 42 } 43 44 } 45 46 public static void main(String[] args) { 47 File file = new File("F:\\a.txt"); 48 searchLine(file); 49 deDuplication(list); 50 } 51 52 public static void deDuplication(List<String> list) { 53 HashSet<String> set = new HashSet<>(); 54 set.addAll(list); 55 for (String string : set) { 56 System.out.println(string); 57 } 58 } 59 }