Java:理解 String replaceAll() 方法
Posted
技术标签:
【中文标题】Java:理解 String replaceAll() 方法【英文标题】:Java: Understanding the String replaceAll() method 【发布时间】:2011-07-08 13:07:04 【问题描述】:我希望在这里找到这个问题的答案。
首先,
blah[abc] = blah[abc].replaceAll("(.*) (.*)", "$2, $1");
谁能解释一下 (.*)、$2 和 $1 是什么?
其次,当我将它嵌套在 for 语句中以反转字符串的两个部分时,我会遇到异常错误。我想知道是否有人知道这是为什么。
谢谢
编辑:这是我收到的错误
线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1 在 ChangeNames.main(ChangeNames.java:21)
【问题讨论】:
【参考方案1】:(.*) - 将是匹配任意数量字符的模式。括号会将其标记为子模式(用于反向引用)。
$2 & $1 - 是反向引用。这些将是您的第二个和第一个子模式中匹配的内容。
基本上 replaceAll("(.) (.)", "$2, $1") 会查找由空格分隔的字符,然后在空格前添加逗号,除了翻转部分.例如:
a b => b, a
Hello world => Hellw, oorld
不确定嵌套...您可以发布您正在运行的代码吗?
【讨论】:
【参考方案2】:您的正则表达式“(.)(.)”将是这样的:“(x)(y)”这将被“$2,$1”替换。
【讨论】:
以上是关于Java:理解 String replaceAll() 方法的主要内容,如果未能解决你的问题,请参考以下文章
Java-String的replaceAll()方法(力扣20题相关)
Java String ReplaceAll 方法给出非法重复错误?
Java String.replaceAll() 与后向引用(backreference)