2013-08-06 56 views
0

我需要使用搜索替換arrayarray,並使用搜索替換單獨的2D array中列出的匹配項。使用另一個2D陣列的索引搜索和替換陣列

-------- --------編輯

終極密碼:

String[][] searchLibrary; // calls the replaces array from the LibToArray method 
    searchLibrary= LibToArray(); 

    for(int i = 0; i <searchLibrary.length; i++){ 
     { 
     fileContents.set(i, fileContents.get(i).replace(searchLibrary[i][0], searchLibrary[i][1])); 
     }  
     } 
    for (String row : fileContents) { 
     System.out.println(row);  // print array to cmd 
     } 
+0

目前尚不清楚你在問什麼。使用get()按索引訪問ArrayList的項目。使用[]按索引訪問普通舊數組的項目。我看到你在這裏工作的唯一ArrayList是'toSearchIn',你似乎正在訪問很好。 –

+0

我沒有看到2D數組。我看到一個字符串的一個數組(實際上是一個ArrayList)。我認爲你需要澄清你想成爲一個二維數組,以及如何(你想要一個ArrayList的ArrayList,或一個ArrayList的數組,或ArrayList的數組?)然後,我們應該能夠幫助獲取語法對。 – ajb

+0

訪問要搜索的'array'我沒有問題。我只是不知道如何使用搜索來搜索它,並替換在單獨的2D數組中列出的術語。 – InDeep

回答

1

OK,第一:你可以定義你replace的你沒有辦法(但將名稱更改回oldstr和newStr - 或者更好,oldStr爲了保持一致性,使用大寫字母S.不能用數字2開始標識符。)然後在外面,像這樣遍歷2D數組:

String[][] twoDimArray; 
// something that sets up twoDimArray 

for (String[] row : twoDimArray) 
    replace (toSearchIn, row[0], row[1]); 

// or, using an index: 

for (int i = 0; i < twoDimArray.length; i++) 
    replace (toSearchIn, twoDimArray[i][0], twoDimArray[i][1]); 

我不知道這是你想要的,因爲我不清楚從描述。如果我很近,twoDimArray是一個數組數組(Java沒有「純」二維數組);具體來說,它是一個未知長度的數組,其中數組的每個元素都是長度爲2的數組。因此,twoDimArray [i]是數組的一個元素,而元素是長度爲二的數組,並且可以使用0或1來索引它。

第二:您可能會使用錯誤的contains()。有一個contains()爲ArrayList和String定義。您的代碼使用ArrayList版本。對於ArrayList,如果數組的任何元素與其參數匹配,它將返回true。這看起來不正確。如果你正在遍歷整個數組,你不想在每一步搜索整個數組。對於字符串,如果字符串包含參數作爲子字符串,則返回true。你必須這樣寫:

if (toSearchIn.get(i).contains(oldstr)) 

因爲toSearchIn.get(i)是一個字符串。但是我只是把它放在外面,因爲如果contains()返回false,那麼replace()將無視這個字符串,這正是你想要的。

+0

我知道'.contains'有什麼問題,我只是不太瞭解它們。感謝那個小珍聞!你在這裏給了我很多選擇。我希望能像你的第二個例子那樣使用索引來做到這一點。一旦我嘗試實現這一點,我會盡快回復您。 – InDeep

+0

使用索引搜索,我一直在'replace'上找到「找不到符號」。 – InDeep

+0

哪個'替換'?你已經刪除了很多原始代碼。你原來的問題有一個'replace'例程;確保它位於可以找到該位置的位置,或者如果它是一個靜態方法時將其作爲類名稱的前綴,或者如果它是一個實例方法的對象,則由您決定。你沒有包含這些信息,所以我只能在我的回答中說「替換(...)」。如果你在談論String replace()例程,那麼我需要看看使用它的代碼。 – ajb