是否可以将对String的replaceAll方法的调用反转?
问题描述:
例如...是否可以将对String的replaceAll方法的调用反转?
String s = "abcxyzabcxyz";
s.replaceAll("xyz", "---");
这通常给我"abc---abc---"
。我怎么会得到它给我"---xyz---xyz"
而不是?
答
String#replaceAll
接受一个正则表达式,如果我理解正确的话,你可以使用:
s.replaceAll("[^xyz]", "---")
说明:
[^xyz]
手段任何字符的 “X” 的不之一,“Y “或”z“。
为了否定 “XYZ” 作为一个系列,使用:
^(?!.*xyz).*$
答
您可以使用此...
s.replaceAll("[^xyz]", "-");
在一个更正式的Java方法,我将使用模式类,像这样:
Pattern p = Pattern.compile("[^xyz]");
s.replaceAll(p.pattern(), "-");
那么,我的第一枪会是's.replaceAll(“abc”,“---”)',但我想这不是你想要的,对吧? – 2014-12-04 13:10:11
它应该如何处理:'String s =“abcwxyzabctuvwxyz”;','s.replaceAll(“xyz”,“123”);' – Eypros 2014-12-04 13:10:14
它不应该太难...... [replaceAll](http ://docs.oracle.com/javase/6/docs/api/java/lang/String.html#replaceAll)需要一个正则表达式作为第一个参数 – AJPerez 2014-12-04 13:12:13