簡單的方法來統計檔案中單詞和各種標點符號個數

來源:互聯網
上載者:User

標籤:style   class   blog   code   java   http   

 此小程式使用最基本的方法來統計文本中英文單詞的個數,想法也比較簡單:(1)從文本中文本讀取內容,使用BufferedReader類每次讀取一行並添加到StringBuffer類型變數中,  最後StringBuffer類型變數即為文本的內容,如StringBuffer sb;(2)把sb的內容全部轉化成小寫字母(或大寫字母);(3)統計檔案中各種標點符號個數;(4)把所有標點符號統一替換成一種標點符號,如替換成逗號(5)替換後的文本使用字串的分割函數來擷取返回的字串數組的長度,此長度即為檔案中單詞的總個數
代碼如下;
import java.io.*;public class WordsCount {    public static void main(String[] args) throws IOException {        // TODO Auto-generated method stub        BufferedReader br = new BufferedReader(new FileReader("e:/a.txt"));        StringBuffer sb = new StringBuffer();        String line;        while((line = br.readLine()) != null)        {            sb.append(line);//把每次讀取的一行資料附加到sb中            sb.append("\n");//每讀取一行加入分行符號        }        System.out.print("原檔案內容:\n"+sb);//列印目前的文章即字串sb的內容        br.close();//關閉檔案流                String s = sb.toString().toLowerCase();//把sb轉化成小寫複製給字串s        System.out.print("字母轉化成小寫後檔案內容:\n"+s);//列印當前文章即字串s的內容            int countCh = 0;//統計檔案中字元個數        StringBuffer c = new StringBuffer();//隱藏檔中字元個數        for(int i=0;i<s.length();i++)        {            char ch = s.charAt(i);//擷取檔案中每一個字元並賦給字元ch            if(!(ch >= ‘a‘ && ch <= ‘z‘))            {                c.append(ch);//把擷取的字元一次附加到c中                countCh ++;                }        }            int space = 0,qm = 0,comma = 0,excl = 0,other = 0;//question mark問號   comma 逗號    exclamation 歎號        for(int i=0;i<c.length();i++)            if(c.charAt(i) == ‘ ‘)                space ++;            else if(c.charAt(i) == ‘?‘)                qm ++;            else if((c.charAt(i) == ‘!‘))                excl ++;            else if((c.charAt(i) == ‘,‘))                comma ++;            else                other ++;                String temp = "";        if(countCh>=0)        {            /*            (1)把所有標點符號替換成逗號之後的檔案內容賦給臨時字串temp,假設本檔案只有,? !等幾種標點.            (2)替換情況可以實際情況出現的標點而改變,注意最後兩個個替換!!一是考慮到派生詞如warm-hearted為一個詞的情況               可以把-替換成26個小寫字母中的任意一個,從而保證派生詞記為一個單詞;二就是縮寫詞,應該把‘替換成為分隔字元,               替換時注意使用逸出字元的使用,從而保證縮寫詞記為一個單詞                        */            temp = s.trim().replace(‘ ‘, ‘,‘).replace(‘.‘,‘,‘).replace(‘!‘,‘,‘).replace(‘?‘,‘,‘)                    .replace(‘(‘,‘,‘).replace(‘)‘,‘,‘).replace(‘-‘,‘a‘).replace(‘\‘‘,‘,‘);            System.out.println("\n替換成逗號之後的檔案內容:\n"+temp+"\n");            String[] data = temp.split(",");                        System.out.println("空格總個數: "+space+"    問號總個數:"+qm                    +"    歎號總個數: "+excl+"    逗號總個數:"+comma+"    其他標點個數: "+other);//列印出空格總個數            System.out.println("\n單詞的總個數為:"+data.length);                    }    }    }

運行結果:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.