※ 引述《H45 (!H45)》之銘言:
: ※ 引述《NightPrince (shooting star)》之銘言:
: : 如果是英文文章的話,可以試試看StringTokenizer
: : 是 java.util package底下的一個class
: : 而你所說的是從檔案讀進輸入,那就必須先讀取一個檔案的內容再使用
: : StringTokenizer
: : 檔案的輸出輸入串流相關class,請參閱 java.io package
: : hint: File、FileReader、BufferedReader and so on.
: : example:
: : try
: : {
: : File file = new File("D:/abc.txt");
: : BufferedReader br = new BufferedReader(new FileReader(file));
: : String s;
: : StringTokenizer token;
: : ArrayList<String> strList = new ArrayList();
: : while( ( s = br.readLine()) != null )
: : {
: : token = new StringTokenizer(s);
: : while( token.hasNextToken() )
: : {
: : strList.add(token.nextToken());
: : }
: : }
: : }
: : catch(Exception ex)
: : {
: : ex.printStackTrace();
: : }
: 可否請教中文的文章該怎麼統計各個文字出現的字數?
: Ex:
: 輸入:
: "背書包,上學去,我的書包裡,有書也有筆,我有四本書,還有三枝筆,還有一個
: 小皮球,也在我的書包裡"
: 輸出:
: 背:1
: 書:5
: 包:3
: 上:1
: 學:1
: 去:1
: 我:3
: 的:2
: 裡:2
: 有:5
: 也:2
: 筆:2
: 四:1
: 本:1
: 還:2
: 三:1
: 枝:1
: 一:1
: 個:1
: 小:1
: 皮:1
: 球:1
: 在:1
呵 java 是用 unicode 所以字串轉成了 char array 還是會原來的編碼
除非你有改掉他
class TestChinese {
static void main(args) {
def String input = "背書包,上學去,我的書包裡,有書也有筆," +
"我有四本書,還有三枝筆,還有一個小皮球,也在我的書包裡"
// 轉成 char array
char[] ca = input.toCharArray()
// 統計用的 HashMap
def stat = [:]
// 計算次數
ca.each{
if (it in stat.keySet())
stat[it] += 1
else
stat[it] = 1
}
// 印出結果
print stat
}
}
=====================================================
結果
[去:1, 也:2, 筆:2, 還:2, 的:2, 背:1, 球:1, 枝:1, ,:7, 皮:1, 個:1, 在:1, 三
:1, 有:5, 小:1, 上:1, 我:3, 本:1, 包:3, 裡:2, 一:1, 學:1, 書:5, 四:1]
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.232.203