What is the difference between substr and substring?
The difference is in the second argument. The second argument to
substring is the index to stop at (but not include), but the second argument to
substr is the maximum length to return.
- We can remember substring takes indices, as does yet another string extraction method, slice .
- When starting from 0 we can use either method.
- Another gotcha we recently came across is that in IE 8,
"abcd", whereas Firefox 3.6 returns
"d"as it should.
sliceworks correctly on both.
substr()accepts a negative starting position as an offset from the end of the string.
- From MDN
- If start is negative, substr() uses it as a character index from the end of the string.
- So to sum up the functional differences:
substring(begin-offset, end-offset-exclusive)where begin-offset is 0 or greater
substr(begin-offset, length)where begin-offset may also be negative
- The difference is second parameter. Their second parameters, while both numbers, are expecting two different things:
- When using substring the second parameter is the first index not to include:
When using substr the second parameter is the number of characters to include in the substring: