# HG changeset patch # User Jaroslav Tulach # Date 1365061566 -7200 # Node ID e5fe6bfca579d92fd2dac11df298aa1e46fd11c6 # Parent b486f65ac4f53325563f3562af43a3a9e6db4a7a Implementation of String.replace(CharSeq,CharSeq) diff -r b486f65ac4f5 -r e5fe6bfca579 rt/emul/mini/src/main/java/java/lang/String.java --- a/rt/emul/mini/src/main/java/java/lang/String.java Thu Apr 04 06:12:36 2013 +0200 +++ b/rt/emul/mini/src/main/java/java/lang/String.java Thu Apr 04 09:46:06 2013 +0200 @@ -2220,9 +2220,19 @@ * replacement is null. * @since 1.5 */ - public String replace(CharSequence target, CharSequence replacement) { - throw new UnsupportedOperationException("This one should be supported, but without dep on rest of regexp"); - } + @JavaScriptBody(args = { "target", "replacement" }, body = + "var s = this.toString();\n" + + "target = target.toString();\n" + + "replacement = replacement.toString();\n" + + "for (;;) {\n" + + " var ret = s.replace(target, replacement);\n" + + " if (ret === s) {\n" + + " return ret;\n" + + " }\n" + + " s = ret;\n" + + "}" + ) + public native String replace(CharSequence target, CharSequence replacement); /** * Splits this string around matches of the given diff -r b486f65ac4f5 -r e5fe6bfca579 rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java --- a/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java Thu Apr 04 06:12:36 2013 +0200 +++ b/rt/vmtest/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java Thu Apr 04 09:46:06 2013 +0200 @@ -149,6 +149,18 @@ public int stringToBytesLenght() throws UnsupportedEncodingException { return "\u017dlu\u0165ou\u010dk\u00fd k\u016f\u0148".getBytes("utf8").length; } + + @Compare public String replaceSeq() { + return "Hello World.".replace(".", "!"); + } + @Compare public String replaceSeqAll() { + return "Hello World! Hello World.".replace("World", "Jarda"); + } + @Compare public String replaceSeqAA() { + String res = "aaa".replace("aa", "b"); + assert res.equals("ba") : "Expecting ba: " + res; + return res; + } @Factory public static Object[] create() {