java wordcount程序_[java]wordcount程序
詞數統計系統。
作業解析:這次作業的內容是從本地讀取一個程序代碼,計算出這個程序中的行數,單詞數,也可進行拓展。
實現語言:java
編程思路:
程序是由各種單詞和符號組成的,單詞包括關鍵字,標識符這些單詞組成的,符號包括各種運算符或者是分隔符...在這里統分為字符和單詞。
在java語言中,可以實例化一個FileReader內讀取程序,再使用BufferReader從字符輸入流中讀取文本并將字符存入緩沖區以便能提供字符、數組和線段的高效讀取,BufferReader類的readline()函數能夠讀取一個文本行,返回一個字符串。這時可以使用String類的split()函數,split()函數能夠分割字符串,參數為正則表達式,返回值為一個字符串數組。寫程序中遇到的困難基本都出在這里,下邊會細說。之后便可以針對分割結果進行計數,運行結果如下圖,圖1是運行結果,圖2 是測試的程序。
調試過程:
這測試的過程中發現統計的行數總會莫名其妙的多很多,經過一番查找,發現是那些以字符結尾,然后換行的句子會出現這個問題,一番查找之后了解到split()函數在同時遇到多個需要剔除的字符時,會在返回結果里創建一個“”的元素,加一個判斷結構便解決了問題。
在書寫的正則表達式里含有.|(){}會報錯,查看了之后有兩個原因:1°.|為轉義字符,前邊需要添加\\。2°編譯器會把表達式內的(){}識別為運算符(){}導致語法錯誤。
圖1
圖2
經驗總結:寫這個程序學習另一個很重要的知識--正則表達式,下面簡單概括一下正則表達式。
定義與用途:正則表達式使用單個字符串來描述、匹配一系列符合某個句法規則的字符串,在編寫處理字符串的程序或網頁時,經常會有查找符合某些復雜規則的字符串的需要。正則表達式就是用于描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。
由此可知,我們可以使用正則表達式對給定字符串進行匹配,查看它是否滿足我們定下的正則表達規則。與此相似,我們也可以通過正則表達式從字符串中獲取我們需要的部分。
語法:正則表達式是由一些普通字符和一些元字符組成的。其中普通字符包括大小寫的字母和數字,而元字符則具有特殊的含義。
一個正則表達式通常被稱為一個模式(pattern),為用來描述或者匹配一系列符合某個句法規則的字符串。例如:Handel、H?ndel和Haendel這三個字符串,都可以由“H(a|?|ae)ndel”這個模式來描述。大部分正則表達式的形式都有如下的結構:
選擇|豎直分隔符代表選擇。例如“gray|grey”可以匹配grey或gray。數量限定某個字符后的數量限定符用來限定前面這個字符允許出現的個數。最常見的數量限定符包括“+”、“?”和“*”(不加數量限定則代表出現一次且僅出現一次):+加號代表前面的字符必須至少出現一次。(1次、或多次)。例如,“goo+gle”可以匹配google、gooogle、goooogle等;?問號代表前面的字符最多只可以出現一次。(0次、或1次)。例如,“colou?r”可以匹配color或者colour;*星號代表前面的字符可以不出現,也可以出現一次或者多次。(0次、或1次、或多次)。例如,“0*42”可以匹配42、042、0042、00042等。匹配圓括號可以用來定義操作符的范圍和優先度。例如,“gr(a|e)y”等價于“gray|grey”,“(grand)?father”匹配father和grandfather。
上述這些構造子都可以自由組合,因此,“H(ae?|?)ndel”和“H(a|ae|?)ndel”是相同的。
精確的語法可能因不同的工具或程序而異。
維基百科,詞條:正則表達式
因為還沒有更深入的使用,就先總結到這里,毫無疑問,正則表達式是一個很強大的工具。
總結
以上是生活随笔為你收集整理的java wordcount程序_[java]wordcount程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《求生之路》最早的设计原型或遭泄漏:一张
- 下一篇: java servlet深入理解_jav