トップページに戻る    次のC#のサンプルへ    前のC#のサンプルへ

7-11 C#ソースを実体参照に変換

C#のサンプル

csファイルのフルパスを引数として、
&を&
<を&lt;
>を&gt;
の実体参照に変換して、テキストファイルに保存します。

英語名称は、CSharpSourceHTMLEscape


ソース

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;

class Program
{
    const string PathEditor = @"C:\Program Files\EmEditor\EmEditor.exe"; //EmEditor

    static void Main(string[] args)
    {
        string TargetFileFullPath = "";
        if (args.Length > 0) {
            TargetFileFullPath = args[0];
        }
        else {
            MessageBox.Show("コマンドライン引数がありません");
            return;
        }
        string[] mLineDataArr =
            File.ReadAllLines(TargetFileFullPath, Encoding.GetEncoding("Shift_JIS"));

        var WriteStrList = new List<string>();
        foreach (string EachStr in mLineDataArr) {
            string CurrLineData = EachStr;

            CurrLineData = CurrLineData.Replace("&", "&amp;");
            CurrLineData = CurrLineData.Replace("<", "&lt;");
            CurrLineData = CurrLineData.Replace(">", "&gt;");
            WriteStrList.Add(CurrLineData);
        }

        //テキストファイルに保存
        string FileName = DateTime.Now.ToString("yyyy年MM月dd日HH時mm分ss秒") + ".cs";
        string SaveFullPath = Path.Combine(getWorkFolder(), FileName);
        File.WriteAllLines(SaveFullPath, WriteStrList.ToArray(),
            Encoding.GetEncoding("Shift_JIS"));

        //テキストファイルを開く
        var InsProcessStartInfo = new System.Diagnostics.ProcessStartInfo();
        InsProcessStartInfo.FileName = PathEditor;
        InsProcessStartInfo.Arguments = SaveFullPath;
        InsProcessStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized;
        System.Diagnostics.Process.Start(InsProcessStartInfo);
    }

    //Dドライブが無かったらCドライブを使う
    static private string getWorkFolder()
    {
        return System.IO.Directory.Exists(@"D:\WorkFile\") ? @"D:\WorkFile\" : @"C:\WorkFile\";
    }
}