空白行削除のためのアルゴリズムについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
notebook

空白行削除のためのアルゴリズムについて

#1

投稿記事 by notebook » 7年前

読み込んだ.txtファイルに空白行があってそれを削除したい。そういう場合はいろんな方法はあると思いますけど、一番楽な方法はなんでしょうか?空白を消して残りの行をつめるとなるとかなり厄介だと思うのですが、メソッドを使えば楽になるのではないかと思います。何かいい方法ありますか?言語はJAVAかC#です

超初級者
記事: 56
登録日時: 9年前

Re: 空白行削除のためのアルゴリズムについて

#2

投稿記事 by 超初級者 » 7年前

空白行の定義は
0個以上の空白文字の直後に改行
でいいですか?

かずま

Re: 空白行削除のためのアルゴリズムについて

#3

投稿記事 by かずま » 7年前

notebook さんが書きました:読み込んだ.txtファイルに空白行があってそれを削除したい。そういう場合はいろんな方法はあると思いますけど、一番楽な方法はなんでしょうか?
一番楽な方法は、プログラムを書かずに既に存在するプログラムを使うことです。
Linux なら、awk NF in.txt >out.txt
Winsows なら、cygwin を入れて、gawk NF in.txt >out.txt

notebook

Re: 空白行削除のためのアルゴリズムについて

#4

投稿記事 by notebook » 7年前

C#のメソッドでありますか?他ツールは使いたくないです。

box
記事: 2002
登録日時: 13年前

Re: 空白行削除のためのアルゴリズムについて

#5

投稿記事 by box » 7年前

プログラムで処理しない方がもしかしたらいちばん楽かもしれませんが、
それはどうしてもまずい、ということですか?どうしてもアルゴリズムを極めたい、と。

秀丸エディターあたりの置換機能を使えば一発でできそうな気がします。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

YuO
記事: 947
登録日時: 13年前
住所: 東京都世田谷区

Re: 空白行削除のためのアルゴリズムについて

#6

投稿記事 by YuO » 7年前

C#で一番楽なのは全行一括読み取り後Linqでフィルタリングして一括書き出し。
全部を一度にやってくれるメソッドは当然ながら存在しないが,既存のものの組み合わせで十分書けます。

上記でわからないなら,https://msdn.microsoft.com/ja-jp/librar ... .110).aspxなんかをざっと眺めて関係しそうなものをきっちり学べばよいかと。

かずま

Re: 空白行削除のためのアルゴリズムについて

#7

投稿記事 by かずま » 7年前

notebook さんが書きました:言語はJAVAかC#です。
Java でもいいんですね?

コード:

import java.io.*;

public class Main {
    public static void main(String[] args) throws java.io.IOException {
        BufferedReader br = new BufferedReader(new FileReader("in.txt"));
        String line;
        while ((line = br.readLine()) != null)
            if (line.length() != 0 && line.split("[ \t]+").length != 0)
                System.out.println(line);
    }
}
なぜ、これでうまくいくのか考えて説明してください。
わからなければ、どこがわからないのかを質問してください。

zeek

Re: 空白行削除のためのアルゴリズムについて

#8

投稿記事 by zeek » 7年前

notebook さんが書きました:C#のメソッドでありますか?他ツールは使いたくないです。
C# のサンプルコードです。

コード:

using System;
using System.IO;
using System.Text;

class Program
{
    static void Main() {
        try {
            using (StreamReader sr = new StreamReader("in.txt", Encoding.Default)) {
                using (StreamWriter sw = new StreamWriter("out.txt", false, Encoding.Default)) {
                    string line;
                    while ((line = sr.ReadLine()) != null) {
                        if (string.IsNullOrWhiteSpace(line) == false) {
                            sw.WriteLine(line);
                        }
                    }
                }
            }
        } catch (Exception e) {
            Console.WriteLine(e.Message);
        }
    }
}
なお、この場合の空白行における空白文字には全角の空白文字も含んでいます。

閉鎖

“C言語何でも質問掲示板” へ戻る