String.substring() function bug

Former Member
Former Member
Something very wrong here!

var s = "ABCDEFGHIJKLMNOPQRSTUVWYZ";
s.substring(0,1)=A
s.substring(1,2)=B
s.substring(2,3)=C
s.substring(3,4)=D
s.substring(4,5)=E
s.substring(5,6)=F
s.substring(6,7)=G
s.substring(7,8)=H
s.substring(8,9)=I
s.substring(9,10)=J
s.substring(10,11)=K
s.substring(11,12)=L
s.substring(12,13)=M
s.substring(13,14)=NOPQRSTUVWYZ
s.substring(14,15)=OPQRSTUVWYZ
s.substring(15,16)=PQRSTUVWYZ
s.substring(16,17)=QRSTUVWYZ
s.substring(17,18)=RSTUVWYZ
s.substring(18,19)=STUVWYZ
s.substring(19,20)=TUVWYZ
s.substring(20,21)=UVWYZ
s.substring(21,22)=VWYZ
s.substring(22,23)=WYZ
s.substring(23,24)=YZ
s.substring(24,25)=Z
  • Yes. Something is indeed very wrong. Here is a test case that only outputs failing test scenarios.

    function test(s, i, j) {
    var ss = s.substring(i, j);

    if (ss.length() != (j - i)) {
    var msg = Lang.format("'$1$'.substring($2$, $3$) = $4$", [ s, i, j, ss ]);

    var ind = " ";

    var a = 0;
    for ( ; a < i; ++a) {
    ind += " ";
    }

    for ( ; a < j; ++a) {
    ind += "_";
    }

    Sys.println(ind);
    Sys.println(msg);
    }
    }

    function main()
    {
    var s = "ABCDEFGHIJKLM"; //"ABCD";

    for (var j = 1; j <= s.length(); ++j) {
    for (var i = 0; i < j; ++i) {
    test(s, i, j);
    }
    }
    }
  • Former Member
    Former Member over 10 years ago
    Thanks for reporting this. We will get it fixed.