テキストファイルの空白行の削除
今回はテキストファイルを読み込んだ際に、空白行を削除する方法について説明します。
事前準備として以下のように読み込む用のテキストファイルを作成してください。今回ファイル名はtext.txt
としていますが、ファイル名と中身は任意で入力してください。

先頭行は空白にしています。また、最終行は“d”で終わりです。
変数の作成
まず、変数一覧でread_text
、text_list
、blank_remove_text
の3つを作成します。変数の型は以下の表の通りに変更してください。
変数名 | 変数の型 |
---|---|
read_text | String |
test_array | Array of<String> |
blank_remove_text | String |
テキストファイルの読み込み
まず、テキストファイルを読み込む
を配置します。
アクティビティ検索欄に「テキストファイル」と入力するかシステム
-> ファイル
-> テキストファイルを読み込む
から配置してください。
配置が完了したら、右下の...
をクリックし、読み込むファイルを選択して、右側のプロパティ欄「出力」にread_text
と入力します。

これで、テキストファイルを読み込むことが出来ました。
読み込んだテキストを配列にする
次は読み込んだテキストを1行ずつ区切り配列にします。
まず、代入
を配置してください。
デフォルトではお気に入り
にあるのでそこから配置してください。
もしお気に入り
に無い場合は、ワークフロー
-> 制御
-> 代入
から配置してください。
配置が完了したら、text_array = read_text.Split(CChar(vbcrlf))
となるように入力します。

これで、読み込んだテキストを改行コードで1行ずつ区切り、配列にすることが出来ました。
空白行以外を取得する
現在、text_array
の中身は以下のようになっています。
インデックス値 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
格納文字列 | aaa | bbb | cc | d |
空白になっている箇所以外をblank_remove_text
に追加していきます。
まず、繰り返し (コレクションの各要素)
を配置します。
アクティビティ検索欄に「繰り返し (コレクションの各要素)」と入力するかワークフロー
-> コントロール
-> 繰り返し (コレクションの各要素)
から配置してください。
配置が完了したら、「コレクション」にtext_array
と入力し、右側のプロパティ欄で「TypeArgument」をString
型に変更してください。

次に本体内に条件分岐
を配置します。
アクティテビィ検索欄に「条件分岐」と入力するかワークフロー
-> 制御
-> 条件分岐
から配置してください。
配置が完了したら、「Condition」にitem.Length > 1
と入力します。

item.Length > 1としている理由は、一番最初の行以外の空白行は“\n”という改行文字が入っていて空白行の文字数は0か1となるため。
read_textは” \naaa\n\nbbb\n\n\ncc\n\n\nd”となっており、“\n”で区切っているためtext_arrayの中身は正確には以下のようになっています。
インデックス値 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
格納文字列 | \naaa | \n | \n | \nbbb | \n | \n | \ncc | \n | \nd | |
文字数 | 0 | 4 | 1 | 1 | 4 | 1 | 1 | 3 | 1 | 2 |
※ “\n”は改行文字で1文字として扱われています。
次に条件分岐
のThen内に代入
を配置します。
配置が完了したらblank_remove_text = blank_remove_text + item
となるように入力します。

最後に繰り返し (コレクションの各要素)
の後に1行を書き込み
を配置します。
デフォルトではお気に入り
にあるのでそこから配置します。
もしお気に入り
に無い場合は、プログラミング
-> デバッグ
-> 1行を書き込み
から配置してください。
配置が完了したら、blank_remove_text
と入力します。
最終的にはシーケンスが以下のようなフロー図になります。

それでは、実行して見ましょう。

空白行以外の行を取得できていることが確認出来ました。
以上で空白行の削除について説明を終了します。
まとめ
全文を改行で区切って配列に格納し、String.Lengthメソッドを使用して1行ごと文字数を取得すると、空白行の文字数は1か0になるため、条件分岐で文字数が1よりも大きい行だけを取得すれば空白行を削除することが出来ます。
「ここの説明がわかりにくい」や「こういった方法もありますよ」などがあればコメントしていただけるとありがたいです。その他のコメントもお待ちしております。
おまけ
今回は説明をするために、読み込んだテキストを一度配列にしていますが代入
の右側に設定した値を繰り返し (コレクションの各要素)
の「コレクション」に直接入力しても同じ結果になります。text_array
を作る必要がなくなり、代入
を配置する必要がなくなるので少しだけ作成の手間を省けます。

コメント