How to convert range (given as string) to true vector

Hi to you all,

suppose I have given the string expression “1-5”. I would like to convert this to a true integer vector, i.e. [1, 2, 3, 4, 5]. That seems to be a bit tricky to me. Could someone give me a hint ?

Thanks

Here is one way, using a regular expression, parse and collect:

julia> str = "1-5";

julia> function range_str_to_vec(str)
           m = match(r"(\d+)\-(\d+)", str)
           m === nothing && error("good error message")
           r = parse(Int, m[1]) : parse(Int, m[2])
           collect(r)
       end;

julia> range_str_to_vec(str)
5-element Vector{Int64}:
 1
 2
 3
 4
 5

Depending on your usecase you might be able to skip the collect since a range behaves more or less like a regular vector, but saves memory.

3 Likes

If you are not familiar to regular expression and the form will be not broken, then split function may be an easier way.

julia> input = "1-5"
"1-5"

julia> (a,b) = parse.(Int64, (split(input, '-')))
2-element Vector{Int64}:
 1
 5

julia> collect(a:b)
5-element Vector{Int64}:
 1
 2
 3
 4
 5

Both solutions are great. Thank you very much!