2011-03-04 94 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被替换