0

文字列のペアを含む 2 次元配列があります。1 つの文字列が見つかった場合は、それをそのペアに置き換える必要があります。

コード:

 for (int i = 0; i < pairs.length; i++) {
        if (name.contains(pairs[i][0])) {
            name.replaceAll(pairs[i][0], abbr[i][1]);
        }
    }

弦交換ではありません。エラーは何ですか?

4

3 に答える 3

4

の結果を割り当てることを怠っているreplaceAllため、変更が失われます。

おそらく、変更された文字列を次のように保持したいでしょうname:

for (int i = 0; i < pairs.length; i++) {
    if (name.contains(pairs[i][0])) {
        name = name.replaceAll(pairs[i][0], abbr[i][1]);
    }
}

JavaStringオブジェクトは不変であるため、呼び出しても変更さname.replaceAll れず、変更されたnewnameが返されることに注意してください。 String

于 2012-08-29T20:50:46.463 に答える
2

文字列は不変です。

name.replaceAll(pairs[i][0], abbr[i][1]);

新しい文字列を作成します (「名前」文字列は変更しません)

試す

name = name.replaceAll(pairs[i][0], abbr[i][1]);
于 2012-08-29T20:51:17.683 に答える
0

文字列の変更されたバージョンが作成されていますが、その戻り値は失われています。

name = name.replaceAll(pairs[i][0], abbr[i][1]);

動作するはずです。

于 2012-08-29T20:53:15.187 に答える