Java實現文本按照自然段落進行切分

jopen 9年前發布 | 2K 次閱讀 Java

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;

/**

  • <p>
  • ClassName GetParagraph
  • </p>
  • <p>
  • Description 使用Java完成對一篇文本的自然段落的切分,在此給出了五種文本格式作為示例,對任一種格式,該程序均可以正確切分。
  • </p>
  • @author TKPad wangx89@126.com
  • <p>
  • Date 2015年2月11日 下午1:33:03
  • </p>
  • @version V1.0.0 / public class GetParagraph { public static void main(String[] args) throws IOException {

     ArrayList<String> res = new ArrayList<String>();// 段落切分結果
     StringBuilder sb = new StringBuilder();// 拼接讀取的內容
     String temp = null;// 臨時變量,存儲sb去除空格的內容
     // BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\a.txt")));
     // BufferedReader reader= new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\b.txt")));
     // BufferedReader reader= new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\c.txt")));
     // BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\d.txt")));
     BufferedReader reader = new BufferedReader(new FileReader(new File("C:\\Users\\TKPad\\Desktop\\e.txt")));
     int ch = 0;
     while ((ch = reader.read()) != -1) {
         temp = sb.toString().trim().replaceAll("\\s*", "");// 取出前后空格,之后去除中間空格
         if ((char) ch == '\r') {
             // 判斷是否是空行
             if (!"".equals(temp)) {
                 // 說明到了段落結尾,將其加入鏈表,并清空sb
                 res.add(temp);
             }
             sb.delete(0, sb.length());
         } else {
             // 說明沒到段落結尾,將結果暫存
             sb.append((char) ch);
         }
     }
     if (reader.read() == -1) {
         System.out.println("哈哈,你讀到了末尾嘞!");
     }
     // 最后一段如果非空, 將最后一段加入,否則不處理
     if (!"".equals(temp)) {
         res.add(temp);
     }
    
     Iterator<String> iterator = res.iterator();
     while (iterator.hasNext()) {
         String next = iterator.next();
         System.out.println("段落開始:");
         System.out.println(next);
     }
     System.out.println("段落的個數是:" + res.size());
    

    } }</pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!