プログラミング工房(分室)
TOP
C#
iniファイル クロスカーソル
C#の作品
ソースファイルのHTML変換 マンデルブロ集合の画像作成 ジュリア集合の画像作成
お問い合わせ

C#の作品-ソースファイルのHTML変換

■2011.05.04:作成
プログラムのダウンロード
プログラムソースのダウンロード
プログラムの操作方法

C#の作品-ソースファイルのHTML変換

プログラムのソース等をHTML形式に変換します。
クリップボートの内容を読み込み、HTML形式に変換し、再度クリップボートにセットします。

変換の内容
  Tabのスペース変換
  "&",">","<"を"&", ">", "<"に変換
  preタグの前後に付ける
ソースファイルのHTML変換
操作方法はここを見てください

変更サンプル
 変更前のソース
            //特殊文字の変更
            strTabSp = strTabSp.Replace("&", "&amp;");
            strTabSp = strTabSp.Replace(">", "&gt;");
            strTabSp = strTabSp.Replace("<", "&lt;");
 変換結果
<pre class="srcBox">
            //特殊文字の変更
            strTabSp = strTabSp.Replace("&amp;", "&amp;amp;");
            strTabSp = strTabSp.Replace("&gt;", "&amp;gt;");
            strTabSp = strTabSp.Replace("&lt;", "&amp;lt;");
</pre>

このプログラムでこの「プログラム工房(分室)」等を作成するとき使用しています。
C#の練習で作成しました。

プログラムソースのメモ

TABを指定した文字数のスペースに置き換える部分
1行の文字データを「TAB」で分解して、分解した文字列の長さを「lenB」関数で求め、
必要な数のスペースを追加する。
        //TABを指定した文字数のスペースに置き換える
        // strBuff:変換前の文字列
        // intTabN:TABをおきかえるスペース数
        // 戻り値:スペースに置き換た文字列
        public string fncStrTanSp(string strBuff, int intTabN) {

            //文字列をTABで分解
            string[] kugiri={"\t"};
            string[] arrStr = strBuff.Split(kugiri,StringSplitOptions.None);

            string strRet  = "";
            int i  = 0;
            foreach(string strDat in arrStr) {
                if( i == 0 ) {
                    strRet = strDat; //分解した1個目の要素はTAB->SP不要
                } else {
                    int n = LenB(strRet) % intTabN;    //必要なSP数
                    strRet += StrDup(intTabN - n, " ") + strDat;
                }
                i++;
            }
            return strRet;
        }

VB6の「LenB」関数:シフトJISに変換後、バイト数を求める。
StrDup関数:指定文字をN文字繰り返す。(VB.NETにあるのにC#にはないので作成)
        //文字列の長さを求める:VB6のlenB関数(日本語が対象)
        // strBuff:長さを求める文字列
        // 戻り値:文字長さ(半角英数字:1文字=長さ1/
                          全角:1文字=長さ2/カタカナ:1文字=長さ1)
        public static int LenB(string strBuff) {
            return System.Text.Encoding.GetEncoding("Shift_JIS").
                                  GetByteCount(strBuff);
        }
        // 文字の繰返し
        // n:繰返し文字数
        // s:繰返す文字
        // 戻り値:繰り返した文字列
        public string StrDup(int n, string s) {
            string strRet = "";
            for (int i = 0;i<n; i++) { strRet += s; }
            return strRet;
        }

iniファイル のiniファイル作成クラスを利用して設定値を保存します。

プログラミング工房(分室)