配列内のNothingを削除したい
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/11/4 15:50:05
そもそも、配列の a の型が何であるのかを教えてください。
Dim a() As Integer だった…なんて事は無いですよね?
Dim a() As Integer だった…なんて事は無いですよね?
' Object 型の配列だった場合
Dim a As Object() = {100, 200, 300, Nothing, Nothing}
a = a.Where(Function(o) o IsNot Nothing).ToArray()
' Integer? 型の配列だった場合
Dim a As Integer?() = {100, 200, 300, Nothing, Nothing}
a = a.Where(Function(i) i.HasValue).ToArray()
' String 型の配列だった場合
Dim a As String() = {"100", "200", "300", Nothing, Nothing}
a = a.Where(Function(s) Not String.IsNullOrWhiteSpace(s)).ToArray()
投稿者 soso  (社会人)
投稿日時
2021/11/8 18:15:05
魔界の仮面弁士様
配列はString型で、回答いただいた内容で解決できました!
配列はString型で、回答いただいた内容で解決できました!
投稿者 るきお  (社会人)
投稿日時
2021/11/8 20:03:15
Stringの配列であれば、こんな手もありますよ。参考までに。
短く書けはするけど、どうかな…。ちょっとわかりくくて敬遠しちゃうかもしれませんね。
Dim a As String() = {"100", "200", "300", Nothing, Nothing}
a = a.OfType(Of String).ToArray
短く書けはするけど、どうかな…。ちょっとわかりくくて敬遠しちゃうかもしれませんね。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2021/11/8 20:53:07
> 配列はString型で、回答いただいた内容で解決できました!
本当に IsNullOrWhiteSpace で良いのかどうか、もう一度確認しておいてください。
Nothing だけ除去したい → 「s IsNot Nothing」または「Not s Is Nothing」または「Not IsNothing(s)」
Nothing だけではなく "" も除去 → 「Not String.IsNullOrEmpty(s)」
Nothing と "" の他、空白のみの文字列も除去 → 「Not String.IsNullOrWhiteSpace(s)」
ここでいう「空白」とは、いわゆる半角空白だけではなく、改行や全角空白など多岐にわたります。
https://docs.microsoft.com/ja-jp/dotnet/api/system.char.iswhitespace
本当に IsNullOrWhiteSpace で良いのかどうか、もう一度確認しておいてください。
Nothing だけ除去したい → 「s IsNot Nothing」または「Not s Is Nothing」または「Not IsNothing(s)」
Nothing だけではなく "" も除去 → 「Not String.IsNullOrEmpty(s)」
Nothing と "" の他、空白のみの文字列も除去 → 「Not String.IsNullOrWhiteSpace(s)」
ここでいう「空白」とは、いわゆる半角空白だけではなく、改行や全角空白など多岐にわたります。
https://docs.microsoft.com/ja-jp/dotnet/api/system.char.iswhitespace
a(0) = 100
a(1) = 200
a(2) = 300
a(3) = Nothing
a(4) = Nothing
という配列がある場合、a(3),a(4)のNothingを除去したいのですが、どのような方法があるでしょうか?