文檔中某些特定數據查詢

問題背景: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 }
相關文章
相關標籤/搜索