Returns a substring of the byte string s, starting from the byte offset, of byte length. The substring is a copy of the original bytes.

The length parameter is optional. If it's not specified, it means until the end of the string.

The offset parameter is zero-based. For example, substr("abcdefg", 0, 3) is "abc".

If the requested range is partially outside the string s, the returned string is truncated. For example, substr("abcdefg", 5, 3) is "fg".

If the requested range is completely outside the string s, an unset value is returned. For example, substr("abc", 4, 2) returns an unset value, the edge case substr("abc", 3, 2) being "".

A negative offset counts backwards from the end of the string s. For example, substr("abcdefg", -3, 2) is "ef".

A negative length counts backwards from the end of the string s with the offset taken into account. For example, substr("abcdefg", 1, -3) is "bcd" and substr("abcdefg", -4, -3) is "de".

An unset value is also returned in the extreme edge cases of the offset or length causing integer overflows.


substr(STRING s, INTEGER offset [, INTEGER length])


log "left=" substr("foobar", 0, 3)
log "middle=" substr("foobar", 2, 3)
log "right=" substr("foobar", -3)