# 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) : parse(Int, m)
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!