2013-08-06 61 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