我需要使用array
strings
搜索并替换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
}
中列出的匹配项。
-------- --------编辑
最终守则:
{{1}}
答案 0 :(得分:1)
好的,首先:您可以按照您的方式定义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]是数组的一个元素,元素是一个长度为2的数组,你可以使用0或1来索引它。
第二:你可能使用了错误的contains()。有一个contains()为ArrayList和String定义。您的代码使用ArrayList版本。对于ArrayList,如果数组的任何元素与其参数匹配,它将返回true
。这看起来不对。如果您单步执行整个数组,则不希望在每个步骤中搜索整个数组。对于String,如果字符串包含参数作为子字符串,则返回true
。你必须这样写:
if (toSearchIn.get(i).contains(oldstr))
因为toSearchIn.get(i)是一个字符串。但是我只是把它留下来,因为如果contains()返回false
,则replace()将只保留字符串,这就是你想要的。