"Am I overlooking a way I can automatically convert the argument pass to a function directly into a string exactly as it was entered?"
Yes. You can use dbstack() to find out the file name and line number of the calling routine, and then you can parse through the source code of that function to determine exactly how it was entered.
This is, of course, wonky. And will not work for the command line.
Short of that, the best you can do is try to recreate the range string by examining the values, working out differences and how long each sub-trend lasts, and so on. People have posted code for that in the past (I have, at some point) but it might not be easy to find.
But if you want handle end, you are going to need to use objects and see https://www.mathworks.com/help/matlab/matlab_oop/object-end-indexing.html