Replace multiple occurences of the same character javap
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 18 Nov 2012 15:20:07 +0100
branchjavap
changeset 1831d6ca19d7174
parent 182 e75412365c87
child 184 03be8510007c
Replace multiple occurences of the same character
emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js
vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java
vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java
     1.1 --- a/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js	Sun Nov 18 14:39:55 2012 +0100
     1.2 +++ b/emul/src/main/resources/org/apidesign/vm4brwsr/emul/java_lang_String.js	Sun Nov 18 15:20:07 2012 +0100
     1.3 @@ -1396,7 +1396,16 @@
     1.4  }
     1.5  
     1.6  function java_lang_String_replaceLjava_lang_StringCC(arg0,arg1,arg2) {
     1.7 -    return arg0.toString().replace(arg1, arg2);
     1.8 +    if (typeof arg1 === 'number') arg1 = String.fromCharCode(arg1);
     1.9 +    if (typeof arg2 === 'number') arg2 = String.fromCharCode(arg2);
    1.10 +    var s = arg0.toString();
    1.11 +    for (;;) {
    1.12 +        var ret = s.replace(arg1, arg2);
    1.13 +        if (ret === s) {
    1.14 +            return ret;
    1.15 +        }
    1.16 +        s = ret;
    1.17 +    }
    1.18  }
    1.19  function java_lang_String_containsZLjava_lang_CharSequence(arg0,arg1) {
    1.20      return arg0.toString().indexOf(arg1.toString()) >= 0;
     2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Sun Nov 18 14:39:55 2012 +0100
     2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Sun Nov 18 15:20:07 2012 +0100
     2.3 @@ -56,6 +56,10 @@
     2.4          return ("" + a + b +c).toString();
     2.5      }
     2.6      
     2.7 +    public static String replace(String s, char a, char b) {
     2.8 +        return s.replace(a, b);
     2.9 +    }
    2.10 +    
    2.11      public static String toStringTest(int howMuch) {
    2.12          counter = 0;
    2.13          StringSample ss = null;
     3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Sun Nov 18 14:39:55 2012 +0100
     3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Sun Nov 18 15:20:07 2012 +0100
     3.3 @@ -94,6 +94,20 @@
     3.4              true, 0, 5
     3.5          );
     3.6      }
     3.7 +    @Test public void replaceChars() throws Exception {
     3.8 +        assertExec(
     3.9 +            "Can replace slashes by underscores",
    3.10 +            "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
    3.11 +            "x_y_z", "x/y/z", '/', '_'
    3.12 +        );
    3.13 +    }
    3.14 +    @Test public void replaceIntChars() throws Exception {
    3.15 +        assertExec(
    3.16 +            "Can replace slashes by underscores",
    3.17 +            "org_apidesign_vm4brwsr_StringSample_replaceLjava_lang_StringLjava_lang_StringCC",
    3.18 +            "x_y_z", "x/y/z", (int)'/', (int)'_'
    3.19 +        );
    3.20 +    }
    3.21      
    3.22      private static CharSequence codeSeq;
    3.23      private static Invocable code;