私のアプリケーションは、インデントされていない C# コード サンプルを読み取り、プログラムでコードをインデントする必要があります。私のやり方は正しくないかもしれませんが、それでも部分的な結果が得られる可能性があります。
a が見つかったときに空白を設定{
し、残りの行を読み取るために同じ量の空白を続けることができます。別の{
スペースが再び見つかったら、スペースを追加し、この新しいスペースで残りの行を続けます。そのために、これは私がしたことです:
private void btn_format_Click(object sender, EventArgs e)
{
string lineInfo = "";
string fl = "";
string ctab= char.ConvertFromUtf32(32)+char.ConvertFromUtf32(32)+char.ConvertFromUtf32(32);
foreach (string line in txt_codepage.Lines) // text_codepage is a textbox with code
{
if (line.Contains("{"))
{
string l = line.Replace("{", ctab+"{");
lineInfo = lineInfo + (l + "\n");
fl = fl + ctab;
ctab = ctab + ctab;
}
else
{
lineInfo = lineInfo + (char.ConvertFromUtf32(32)+fl+ line + "\n");
}
ここまでは、必要な適切なインデントを達成できました。が見つかっ}
たら、逆のプロセスを実行する必要がありますが、残念ながら文字列ではそれができません。私が意味した逆のプロセスはこれです:
if (line.Contains("}"))
{
string l = line.Replace(ctab + "}", "}");
lineInfo = lineInfo + (l + "\n");
fl = fl - ctab;
ctab = ctab - ctab;
}
else
{
lineInfo = lineInfo - (char.ConvertFromUtf32(32) + fl + line + "\n");
}
}
MessageBox.Show(lineInfo.ToString());
コードの上記の部分が完全な失敗であることは知っていますが、正しい方法でそれを達成する方法を教えてください