How to check if a variable is an Integer Array or a String of comma separated integer values?

How to determine that:

[11,15] is an Integer Array? [true or false] ?

and that:

"[11,15]" is a string having this structure ?

Thank you.

What have you tried so far? What do you think the steps might be, if you break both problems down? Can you use a solution to the first problem to solve the second?

1 Like
iex(1)> is_binary("[11, 15]")
true
iex(2)> is_binary([11, 15])  
false

The second question cannot be answered without knowing by which criteria you consider "[11,15]" to be an array of integers. Like is it meant to be json formatted, elixir code, anything else?

1 Like

Considering double quotes as part of the string, below might work

`
def test(data) when is_binary(data), do: true

def test(data) when is_list(data) do
data
|> Enum.all?(&is_integer/1)
end

`

For the string, you can return a tuple indicating the type. Sorry; typing from a phone.

1 Like

I mean that it has a format similar to:

"[2,4,6]"

or:

"[7,14,55]"

i.e. JSON array of integers received at the server as a string e.g. “[7,14,55]”

If it’s JSON than you can use a json library to decode the value and see if it matches your assumptions. If you don’t know the format of the encoded data of your string however you cannot tell what it’s supposed to mean.

If you want an integer array in the end, why not just detect a string with is_binary and then parse it with a JSON library?

I smell a XY problem here, it might be better if you just tell us your desired result – and not ask how best to implement a single if condition.