"", "&" を変換

"<", ">", "&" を変換

前回作成した、最低限機能の「SourceToHTML」では、
コード中の、"<", ">", "&" が間違って解釈されるので、
これらを、"&lt;", "&gt;", "&amp;" に変換する機能を
charcopyに追加してtohtmlを作成する。


//ソースファイルを読んで、ソース部を出力する
Reader source = new Reader("Form1.cs");
tohtml(source, writer);
source.Close();
source = null;


//*********************************************************************
// HTML に書式化して出力
//*********************************************************************
public void tohtml(Reader reader, Writer writer)
{
//ファイルの終わりまで、1文字ずつ読んで
char c;
while ((c = reader.getChar()) != EOF)
{
// "<", ">", "&" を変換して出力
writer.putString(getHtmlChar(c));
}
}


//*********************************************************************
// "<", ">", "&" を変換
//*********************************************************************
private string getHtmlChar(char c)
{
if (c == '<') return "&lt;";
if (c == '>') return "&gt;";
if (c == '&') return "&amp;";

return c.ToString();
}

出力ファイル用クラスには、文字列単位で処理できる関数
putStringを追加する。


//*********************************************************************
// 出力ファイル用クラス
//*********************************************************************
public class Writer
{
//*****************************************************************
// 出力ファイルに文字列を書く
//*****************************************************************
public void putString(string s)
{
for (int i=0;i<s.Length;i++)
{
putChar(s[i]);
}
}
}