使用哈希表來存儲單詞作爲鍵和計數作爲值
哈希表(稱爲關聯數組或其他語言的字典)僅允許唯一的密鑰
該perl的一個襯裏演示概念
perl -n -e '$a{$_}++ for(split(/\s+/)); END { use Data::Dumper; print Dumper(\%a);}' corpus.txt
這裏是在Python這樣的事情
counter = dict()
for line in open("corpus.txt").readlines():
for word in line.split(" "):
v = counter.get(word, 0)
counter[word] = v + 1
for word in sorted(counter.keys()):
print "%d \t %s" % (counter[word], word)
你剛剛編輯了你的問題來說它是用java編寫的。在Java中,有HashMap的類型 可以使用,這裏是一個例子聲明
HashMap<String, Integer> lookup = new HashMap<Character, Integer>();
至於你的問題的第二部分,正則表達式可能的工作 - 雖然像你描述刪除一些字符其實是相當複雜的嚴格執行。
這樣
s/[^\w\s]//g
甲正則表達式取代意指
- S代表替代,S/1/2的裝置代替一個1對於2
- [開始字符類
- ^字符類內匹配相反類
- \ w字母字母
- \ S空白
- ]字符類的末尾
- 末尾的g是一個「全球性」的旗幟,多次應用於輸入
使匹配任何不是空格或字母和什麼也沒有更換,即刪除
要在Perl中使用一個以上襯墊
perl -n -e 's/[^\w\s]//g; $a{$_}++ for(split(/\s+/)); END { use Data::Dumper; print Dumper(\%a);}' corpus.txt
蟒蛇,Java和其他LANGUAG es也有正則表達式系統
您應該搜索「從列表(語言)中刪除重複的單詞」和「從文本(語言)中刪除標點符號」。 –
語言?你到現在爲止有什麼? –
好的,謝謝生病嘗試使用java搜索即時消息 – Mike