I have mixed feelings about optional parameters and have seen numerous problems caused by a simple typo, or a forgotten parameter, being accepted as valid in languages where such "features" exist. Debugging can certainly become more involved and problems can become more subtle.

To keep things nice and simple perhaps the special case of zero for the length could be used to mean the rest of the string. It's certainly easy enough to type and read and would also provide backward compatability.