C# has String.IsNullOrWhiteSpace(String), do we have a IsNothingOrWhiteSpace(String)?
CodePudding user response:
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)
CodePudding user response:
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.
