こんにちは、プレーンな構文を人間が読める形式に変換するための関数を作成する際に、ちょっと助けが必要です:
構文は次のようになります。
[OPENTAG]
(type)name:value
[OPENTAG]
(type)name:value
(type)name:value
(type)name:value
[/CLOSETAG]
[/CLOSETAG]
これをこれに変えたい:
[OPENTAG] (型)名:値 [OPENTAG] (型)名:値 (型)名:値 (型)名:値 [/CLOSETAG] [/CLOSETAG]
private string textFormater(string input)
{
string[] lines = Regex.Split(input, "\r\n");
int tabs = 0;
string newtext = "";
foreach (string line in lines)
{
Match m = Regex.Match(line, "\\[.*\\]");
bool isTop;
bool isTopClose = false;
string tabtext = "";
if (m.Success)
{
if (line.Contains("/"))
{
tabs--;
isTopClose = true;
}
else
{
tabs++;
}
isTop = true;
}
else
{
isTop = false;
}
if (isTop && !isTopClose && tabs == 1)
{
newtext += line;
}
else if (isTop && !isTopClose)
{
for (int i = 1; i <= tabs - 1; i++)
{
tabtext += "\t";
}
newtext += "\r\n" + tabtext + line;
}
else
{
for (int i = 1; i <= tabs; i++)
{
tabtext += "\t";
}
newtext += "\r\n" + tabtext + line;
}
}
return newtext;
}
私は解決策を持っていますが、コードは非常に面倒で遅く、2MBのファイルでは時間がかかります:) 助けてくれてありがとう!
乾杯