*

[C#]BlankClear テキストファイルから空白を削除ツール

公開日: : 最終更新日:2014/11/23 C#, どうでもいいツール

10分ぐらいで作ったツールって本当にすぐどこかに行ってしまいますよね。
あんなツール作ったけど、ええと、なんていう名前だっけ……みたいな感じで。
そんなわけで忘れないようにここに保管しております。
使用は自己責任でお願いします。

◆概要
テキストファイルを指定すると、そのテキストファイルから空白が削除されます。
ほんとにそれだけの機能。
エラーに対応しているようで対応していないかもしれません。
PDFなどの比較をするときに空白が邪魔だったので作りました。

◆仕様
.NET Framework 4.5以上
言語はC#
利用するファイルはUTF-8のみ(DoubleByteがなければSJISも大丈夫だとおもう)

◆使い方
同じフォルダにexeを配置して、コマンドラインでexeを実行して、
引数に編集したいファイルを入れるだけ。

◆実行コマンド

C:\Users\Wanabe\Desktop\tmp>BlankClear.exe test.txt

◆結果
[test.txt]

test    test   test


[test_output.txt]

testtesttest

◆ソース

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace BlankClear {
    enum Error{
			FileNotFound,
			TooManyFiles,
			AssignFileNothing,
			CouldNotOpenFile
		}
		
	// Error Helper
	static class EnumError{
		public static string DisplayName(this Error error){
			string[] names = {
				"ファイルが見つかりません",
				"ファイルの指定は1つまでです",
				"ファイルを一つ指定してください",
				"指定されたファイルを開く、または結果のファイルに書き込むことが出来ません",
			};
			return names[(int)error];
        }
    }

    class Program {

        // Example;[FileName]AddStr[Extention]
        const string AddStr = "_output";

        // Main
        static void Main(string[] args) {
            bool continueFlg = true; ;

            if (args.Length == 0) {
                continueFlg = false;
                Console.WriteLine(Error.AssignFileNothing.DisplayName());
            }
            else if (args.Length > 1) {
                continueFlg = false;
                Console.WriteLine(Error.TooManyFiles.DisplayName());
            }
            else if (!File.Exists(System.Environment.ExpandEnvironmentVariables(args[0]))) {
                continueFlg = false;
                Console.WriteLine(Error.FileNotFound.DisplayName());
            }

            if (continueFlg) {
                string inFilePath = System.Environment.ExpandEnvironmentVariables(args[0]);
                if (!inFilePath.Contains('\\')) {
                    inFilePath = Directory.GetCurrentDirectory() + '\\' + args[0];
                }

                using (StreamReader reader = new StreamReader(inFilePath))
                using (StreamWriter writer = new StreamWriter(Path.GetDirectoryName(inFilePath) + @"\" + Path.GetFileNameWithoutExtension(inFilePath) + AddStr + Path.GetExtension(inFilePath), false)) {
                    try {
                        string str = reader.ReadToEnd();

                        StringBuilder builder = new StringBuilder();
                        foreach (char c in str) {
                            if (c != ' ' && c != ' ') {
                                builder.Append(c);
                            }
                        }
                        reader.Close();
                        writer.Write(builder.ToString());
                        writer.Close();
                    }
                    catch (Exception) {
                        Console.WriteLine(Error.CouldNotOpenFile.DisplayName());
                    }
                }
            }
        }
    }
}

◆ソース解説
エラーメッセージはこうやって一箇所にまとめておくと編集しやすくなります。
あとから仕様変更あると大変ですのでね。

◆Download
BlankClear



◇AppStore無料ランキング1位獲得!!

ad

関連記事

Unity_

[Unity]Unity 2Dチュートリアル スプライトを元の位置に戻す

前回ドラッグして移動するところまでは作成したのですが、パズドラって、タップしてもその場から動かさなか

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 同じ色のパズルを消去する

前回の続き。 さて、そろそろパズドラみたいにパズルを消すロジックを考えていきましょう。 パズ

記事を読む

addcomp

[Unity]コードリファレンス コンポーネントをアタッチする。

コンポーネントをプログラム実行時に追加します。 AddComponent() AddComp

記事を読む

Unity_

[Unity]Unity4.6 UIチュートリアル Lesson6.UI Events and Event Triggers 日本語要約

前回の続き。 ついにずっと画面で見えていた謎のEventSystemに触れます。 なんか

記事を読む

Unity2_1

[Unity]Unity2Dチュートリアル スプライトを利用する

前回の続き。 早速、スプライトを設置して作っていきましょう。 ※スプライトとは スプライ

記事を読む

wannabenote_unity

[Unity]コードリファレンス ゲーム時間を表示する。

ゲーム内の時間を表示します。 Timeクラス 時間のためのクラスです。 ゲームが起動してか

記事を読む

Unity_

[Unity]Unity 2Dチュートリアル スプライトをドラッグ(タップ)して移動する

前回はスプライトの簡単な操作を覚えました。 今回はスプライトを移動させてみましょう。 ドラッグして

記事を読む

Unity_

[Unity]Unity2Dチュートリアル 画面上のGameObjectを取得する

前回の続きです。 というわけで移動の仕方は完璧です。本当なら一瞬で移動ではなく、パズドラみたく

記事を読む

logo

[Unity]GameObject.Findは遅い

遅いらしいです。 なので、マネージャークラスを作りましょう、というのが風潮らしいです。 マネージ

記事を読む

logo

プログラミング言語の選択

最初のプログラミング言語っていうのは思い入れが深いもんです。 私はこんな感じ。 C言語 ↓ jav

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑