Fix for String.replace.
Issue: #4180
Patch by: jat
Review by: me
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@2146 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/super/com/google/gwt/emul/java/lang/String.java b/user/super/com/google/gwt/emul/java/lang/String.java
index 5ab0153..195df8d 100644
--- a/user/super/com/google/gwt/emul/java/lang/String.java
+++ b/user/super/com/google/gwt/emul/java/lang/String.java
@@ -322,8 +322,9 @@
}-*/;
public native String replace(char from, char to) /*-{
- var code = @java.lang.Long::toHexString(J)(from);
- return this.replace(RegExp("\\x" + code, "g"), String.fromCharCode(to));
+ var code = @java.lang.Integer::toHexString(I)(from);
+ code = "0000".substring(code.length) + code;
+ return this.replace(RegExp("\\u" + code, "g"), String.fromCharCode(to));
}-*/;
/**
diff --git a/user/test/com/google/gwt/emultest/java/lang/StringTest.java b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
index 67d874d..46430af 100644
--- a/user/test/com/google/gwt/emultest/java/lang/StringTest.java
+++ b/user/test/com/google/gwt/emultest/java/lang/StringTest.java
@@ -199,6 +199,10 @@
char from = (char) (to + 5);
assertEquals(toS(to), toS(from).replace(from, to));
}
+ // issue 1480
+ assertEquals("example xd", "example xd".replace('\r', ' ').replace('\n', ' '));
+ assertEquals("dog food", "dog\u0120food".replace('\u0120', ' '));
+ assertEquals("ABABAB", "\u1111B\u1111B\u1111B".replace('\u1111', 'A'));
}
public void testReplaceAll() {