Java确实有这个功能,谢谢您的回答,很遗憾我对API不感兴趣.
例如:
String strOriginal = "A:B&C@D";我认为在java中应该有一个非常好的方法来像这样修改它:
String strNew = NewReplaceAll("(.*?)\\:(.*?)&(.*?)@(.*?)","\4_\3^\2(\1\2\2\1)");这可能会产生这样的结果:
AssertTrue(strNew.equalsWith("D_C^B(ABBA)") );发布于 2014-01-08 13:27:19
我认为,您的工作印象是,第二个String参数不接受-引用。
确实如此。
例如:
System.out.println("foo123".replaceAll("foo(.+)", "baz$1"));输出:
baz123发布于 2014-01-08 13:35:33
它确实接受regex作为替代,但它使用“美元”表示法(而不是“反斜杠”符号)作为反向引用。
所以你的例子应该是:
String strNew = str.replaceAll("(.*?)\\:(.*?)&(.*?)@(.*?)","$4_$3^$2($1$2$2$1)");注意,捕获的组1被称为$1,而不是\1等等。
https://stackoverflow.com/questions/20996965
复制相似问题