0

別の 2D にリストされている検索と置換の一致を使用しarrayて、 を検索して置換する必要があります。stringsarray

- - - - 編集 - - - -

最終コード:

    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
        }
4

1 に答える 1

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 次元配列はありません)。具体的には、配列の各要素が長さ 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() はとにかく文字列をそのままにしておくため、省略します。これはあなたが望むことです。

于 2013-08-06T16:28:23.080 に答える