2013-03-12 249 views
0

我做了一個數組列表,存儲文本文件中的單詞。但現在我需要製作一個單獨的數組列表,只需從文件中的單詞中將字母恢復爲小寫字母,並刪除單詞中或其周圍的所有標點符號。所以基本上它恢復了所有提到的元素從它們中刪除的所有單詞。我如何修改我的arrayList,因爲我輸入到另一個arrayList,以便刪除和更改它的值?

 List<String> grams = new ArrayList<String>(); 
     for(String gram : words){ 
      gram = gram.trim(); 
      for(int i=0,int l=gram.size();i<l;++i){ //this line is wrong 
       const String punChars = ",[]:'-!_().?\/~"; //this line is wrong 
       if(gram.indexOf(i) != -1){ //this line is wrong 
        gram.remove(i); //this line is wrong 
       } 
       gram.add(gram.remove(0).toLowerCase()); //this line is wrong 
      } 
     } 

基本上,我試圖讀取每一個字符數組中的一個選擇字符串作爲我把它改成了新的數組列表,然後如果有周圍或在任何標點符號我刪除它:我試着使用const來存儲標點符號值,然後使用if語句檢查字符串以刪除字符串中的位置。

接下來我嘗試添加單詞但刪除大寫字母並將其改爲小寫。

我有點失落,我不知道是什麼,我這個位在這裏做...

回答

2

我你的問題的解釋是,你想通過單詞的列表,將它們轉換成小寫,刪除標點符號,然後將它們插入到另一個列表中?如果是這樣的話,那麼我不明白你爲什麼需要修改原始列表。你可以做這樣的事情:

for(String gram : words) { 
    gram = gram.trim(); //trim string 
    gram = gram.replaceAll("[^A-Za-z0-9]", ""); //remove any non alphanumeric characters 
    grams.add(gram); //add to the grams list 
} 
+0

非常感謝Vivian,這種方法有效地消除了所有的標點符號,並且是一種簡單得多的方法,我幾乎感到尷尬,我沒有想到的第一個地方。然後,我將嘗試完成我的其餘問題,即將所有大寫字母切換爲小寫字母。我將試圖簡單地使用這個替換所有方法。 – 2013-03-13 00:40:05

+0

好吧,我這樣做,這是愚蠢的。所以,我只是試過 gram = gram.toLowerCase();它的工作。一邊非常感謝您的幫助。 – 2013-03-13 00:48:22

+0

@RyanTibbetts我錯過了必須將其轉換爲小寫字母的部分。是的,這樣做應該可行! – 2013-03-13 16:20:31

0

爲什麼通過在字符串中的每個字符像這樣不循環:

for (char c : gram.toCharArray()) { 
    ... 
} 

然後檢查,看看你的性格是在排除的字符的列表,如果沒有的話小寫它並將其添加到輸出列表中?

相關問題