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 次元配列はありません)。具体的には、配列の各要素が長さ 2 の配列である長さ不明の配列です。つまり、twoDimArray[i] は配列の 1 つの要素であり、要素は長さ 2 の配列であり、0 または1 にインデックスを付けます。
2 番目: 間違った contains() を使用している可能性があります。ArrayList と String の両方に対して定義された contains() があります。あなたのコードは ArrayList バージョンを使用しています。ArrayList のtrue
場合、配列のいずれかの要素がその引数と一致する場合に返されます。それは正しくありません。配列全体をステップ実行している場合、すべてのステップで配列全体を検索する必要はありません。文字列の場合、文字列に引数が部分文字列として含まれtrue
ている場合に返されます。次のように記述する必要があります。
if (toSearchIn.get(i).contains(oldstr))
toSearchIn.get(i) は文字列であるためです。しかし、contains() が を返す場合false
、replace() はとにかく文字列をそのままにしておくため、省略します。これはあなたが望むことです。