在Java文本文件中查找單詞總數的最佳方法是什麼?我認爲Perl是找到像這樣的東西最好的。如果這是真的,那麼從Java中調用Perl函數將是最好的?你在這種情況下會做什麼?任何更好的想法?在Java中確定文件的總字數的最佳方法是什麼?
4
A
回答
10
恭喜你已經在最大的語言問題之一絆倒!什麼是一個詞?據說一個詞是唯一一個實際上意味着它的詞。整個語言學領域專門用於詞義/單位意義 - 形態學。
我假設你的問題涉及用英語計算單詞。但是,由於語言的差異,創建一個與語言無關的詞計數器/解析器幾乎是不可能的。例如,有人可能會認爲只處理由空格分隔的字符組就足夠了。但是,如果你看一下在日本下面的例子中,你會看到,這種辦法行不通:
これは日本語の例文です
這個例子包括3個不同的字,其中沒有一個是分開的。由空格。通常情況下,日語單詞邊界使用基於字典的方法進行分析,並且有許多商業庫可用於此目的。我們很幸運有英文空間!我相信印度語,中國和韓國也有類似的問題。
如果此解決方案將以多語言輸入的任何方式實際部署,根據要解析的語言插入不同的字數統計方法將很重要。
我認爲第一個答案是一個很好的答案,因爲它使用Java的Unicode空白值作爲分隔符的知識。它使用下面的正則表達式進行匹配:\p{javaWhitespace}+
-3
我在文件中的每個字符初始化word_count
INT爲1,然後循環並增加word_count
每一個空格字符除非前一個字符是一個空白字符。 (空格,製表符或換行符)
0
對定義「單詞」做了一些假設,一種解決方案是使用文本流讀取器打開文件並對其進行掃描,計算非連續空白的數量字符,加上一個結束,例如
this is some sample text
this is some more sample text
上面的文字會在這11個字,算作9位和1個換行符和1結束文件
2
雖然Perl可以做到這一點,我認爲這是矯枉過正掛靠在/調用它來完成這種任務(除非你已經測試過了)。
- 我的建議是尋找&從代碼中學習,在網絡上做你需要的東西,在這裏:http://schmidt.devlib.org/java/word-count.html
16
int count = 0;
Scanner sc = new Scanner(new File("my-text-file.txt"));
while (sc.hasNext()) {
++count;
sc.next();
}
1
如果你在unix上,wc -w filename
會做的。
相關問題
- 1. 在ng-grid中做列總數的最佳方法是什麼?
- 2. 在java中確定文件的MIME類型的最佳方法?
- 3. 在Java中識別特定文件類型的最佳方法是什麼?
- 4. 在Java中創建XML文件的最佳方式是什麼?
- 5. 確定標量是否擁有文件句柄的最佳方法是什麼?
- 6. 穩定垂直文字節奏的最佳方法是什麼?
- 7. 確定Object是否被更改的最佳方法是什麼?
- 8. 在C++中處理大數字的最佳方法是什麼?
- 9. 在Dataflow中處理GCS文件的最佳方法是什麼?
- 10. 在PHP中讀取大文件的最佳方法是什麼?
- 11. 在gulp.watch中過濾文件的最佳方法是什麼?
- 12. 確定HTTP文件上傳的MIME類型的最佳方法是什麼?
- 13. 在MySql中彙總數據的最佳方式是什麼?
- 14. 在AS3中確定Flash上下文的最佳方法是什麼?
- 15. 總結區間數據的最佳方法是什麼?
- 16. 確定哪些源文件不再需要的最佳方法是什麼?
- 17. 確定ASP.net網站客戶端的最佳方法是什麼?
- 18. 確定ISV目錄路徑的最佳方法是什麼?
- 19. 什麼是確定CSS問題源的最佳方法
- 20. 訪問非確定性資源的最佳方法是什麼?
- 21. 在Java中處理未接受方法參數的最佳方法是什麼?
- 22. 將數組寫入文件的最佳方法是什麼?
- 23. 加載正確的PhoneGap文件的最佳方式是什麼
- 24. 在java中檢查文件創建權限的最佳方法是什麼
- 25. Swf文件:開發swf文件的最佳方法是什麼?
- 26. 在Java中自定義排序的最佳方式是什麼?
- 27. 在Java中動畫的最佳方法是什麼?
- 28. 在Java中使用序列化的最佳方法是什麼?
- 29. 在Java中「包裝」ArrayList的最佳方法是什麼?
- 30. 在java中擴展類funcionality的最佳方法是什麼?
請謹慎使用Java中的\ p {javaWhiteSpace},因爲它不對應於您可能在Perl中找到的Unicode \ p {Space}屬性。兩個代碼點都包括0009,000A,000B,000C,000D,00A0,2007和202F。Java空白還包括001C,001D,001E,它們不是Unicode空格。 Java空白忽略了幾個Unicode空白代碼點,其中最令人震驚的是00A0,NO-BREAK SPACE。這讓我陷入麻煩之前,所以要非常小心。 – tchrist 2010-10-30 05:44:03