6

私はここでこの問題の答えを見つけようとしています。

最初に、

blah[abc] = blah[abc].replaceAll("(.*) (.*)", "$2, $1");

(。*)、$ 2、$ 1とは何か説明してもらえますか?

次に、文字列の2つの部分を逆にするために、forステートメント内にそれをネストすると、例外エラーが発生します。なぜだろうかと思っていました。

ありがとう

編集:これは私が受け取るエラーです

スレッド"main"の例外java.lang.ArrayIndexOutOfBoundsException:1 at ChangeNames.main(ChangeNames.java:21)

4

2 に答える 2

11

(。*)-任意の数の文字に一致するパターンになります。括弧は、それをサブパターンとしてマークすることです(後方参照用)。

$ 2&$1-バックリファレンスです。これらは、2番目と1番目のサブパターンで一致するものになります。

基本的にreplaceAll( "(。)(。)"、 "$ 2、$ 1")は、スペースで区切られた文字を検索し、スペースの前にコンマを追加し、さらにパーツを反転します。例えば:

a b => b, a
Hello world => Hellw, oorld

ネストについてよくわかりません...実行しているコードを投稿できますか?

于 2011-03-04T03:52:09.847 に答える
-1

正規表現"(。)(。)"は次のようになります: "(x)(y)"これは "$ 2、$1に置き換えられます。

于 2011-03-04T03:53:54.040 に答える