2011-03-04 95 views
4

我正在尋找解決此問題的答案。Java:瞭解字符串replaceAll()方法

首先,

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

有人能向我解釋什麼(。*),$ 2和$ 1?

其次,當我在for語句中嵌套該語句以顛倒字符串的兩個部分時,我遇到了一個異常錯誤。我想知道是否有人知道這是爲什麼。

由於

編輯:這是錯誤我接收

異常在線程 「主要」 java.lang.ArrayIndexOutOfBoundsException:1 在ChangeNames.main(ChangeNames.java:21)

回答

10

(。*) - 將成爲匹配任意數量字符的模式。括號將被標記爲一個子模式(用於反向引用)。

$ 2 & $ 1 - 是返回引用。這些將在你的第二和第一個子模式中匹配。

基本上的replaceAll( 「(。)(。)」, 「$ 2,$ 1」)會發現由空格分隔的字符,則該空間之前添加逗號,除了翻轉部分。例如:

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

不知道有關嵌套...您可以發佈您正在運行的代碼嗎?

+0

想通了謝謝 – Jds 2011-03-04 04:02:36

+0

!很好的解釋,所以我做了+1 – Prashant 2015-01-04 14:22:20

-1

你的正則表達式 「()()」 將這種。 「(X)(Y)」,這將通過「$ 2,$ 1被替換