Duplicate :
|
FULL PRODUCT VERSION : ADDITIONAL OS VERSION INFORMATION : On Windows and Mac OS X and probably everywhere... Windows ======= * Windows XP Professional, Service Pack 3 $ java -version java version "1.6.0_20" Java(TM) SE Runtime Environment (build 1.6.0_20-b02) Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing) Mac OS X ======== * Darwin plasma.lan 9.8.0 Darwin Kernel Version 9.8.0: Wed Jul 15 16:55:01 PDT 2009; root:xnu-1228.15.4~1/RELEASE_I386 i386 java -version java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04-248-9M3125) Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01-101, mixed mode) A DESCRIPTION OF THE PROBLEM : Complete example here: package se.storm.opapi; public class TestBugReplaceAll { public final static void main(String[] args) { System.out.println("gobbledegook".replaceAll("oo", "\\")); } } /* [info] Running se.storm.opapi.TestBugReplaceAll java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:686) at java.util.regex.Matcher.appendReplacement(Matcher.java:703) at java.util.regex.Matcher.replaceAll(Matcher.java:813) at java.lang.String.replaceAll(String.java:2189) at se.storm.opapi.TestBugReplaceAll.main(TestBugReplaceAll.java:6) */ STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : See Descr. above EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - should replace all "oo" with "\", i.e. replace all occurances of double o with a single backslash character. ACTUAL - throws java.lang.StringIndexOutOfBoundsException: String index out of range: 1 see desc above. ERROR MESSAGES/STACK TRACES THAT OCCUR : java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:686) at java.util.regex.Matcher.appendReplacement(Matcher.java:703) at java.util.regex.Matcher.replaceAll(Matcher.java:813) at java.lang.String.replaceAll(String.java:2189) at se.storm.opapi.TestBugReplaceAll.main(TestBugReplaceAll.java:6) REPRODUCIBILITY : This bug can be reproduced always. ---------- BEGIN SOURCE ---------- package se.storm.opapi; public class TestBugReplaceAll { public final static void main(String[] args) { System.out.println("gobbledegook".replaceAll("oo", "\\")); } } /* [info] Running se.storm.opapi.TestBugReplaceAll java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:686) at java.util.regex.Matcher.appendReplacement(Matcher.java:703) at java.util.regex.Matcher.replaceAll(Matcher.java:813) at java.lang.String.replaceAll(String.java:2189) at se.storm.opapi.TestBugReplaceAll.main(TestBugReplaceAll.java:6) */ ---------- END SOURCE ---------- CUSTOMER SUBMITTED WORKAROUND : unknown.