Does a method exist to check if a variable is Nothing or WhiteSpace?

143 views Asked by At

C# has String.IsNullOrWhiteSpace(String), do we have a IsNothingOrWhiteSpace(String)?

2

There are 2 answers

2
Przemyslaw Szufel On BEST ANSWER

A slightly more elegant way than the other answer would be to fully use the multiple dispatch:

isNullOrWS(::Type{Nothing}) = true
isNullOrWS(::Nothing) = true
isNullOrWS(verify::AbstractString) = isempty(strip(verify))
isNullOrWS(::Any) = false

This actually results also in a faster assembly code.

julia> dat = fill(Nothing, 100);

julia> @btime isNullOrWS.($dat);
  174.409 ns (2 allocations: 112 bytes)

julia> @btime IsNullOrWhiteSpace.($dat);
  488.205 ns (2 allocations: 112 bytes)
0
AudioBubble On

I've searched the documentation and it doesn't seem to exist, but you can write it yourself.

function IsNullOrWhiteSpace(verify::Any)
  # If verify is nothing, then the left side will return true.
  # If verify is Nothing, then the right side will be true. 
  return isnothing(verify) || isa(nothing,verify)
end 

function IsNullOrWhiteSpace(verify::AbstractString)
  return isempty(strip(verify))
end

println(IsNullOrWhiteSpace(nothing)) # true
println(IsNullOrWhiteSpace(" ")) # true

Might not be the best way to do it, but it works.

Why do we need both isnothing() and isa()?

Let's see what will happen when we use isnothing() with nothing and Nothing.

println(isnothing(nothing)) # true
println(isnothing(Nothing)) # false

We obviously want to handle Nothing, how do we do it?

Using isa(), it will test if nothing is a type of Nothing.