テキストフォーマットを解析しようとしています。SO と同じように、インライン コードをバッククォート ( `
) でマークしたいと考えています。ルールは、インライン コード要素内でバッククォートを使用する場合は、インライン コードの周りに二重のバッククォートを使用する必要があるというものです。
このような:
`` インライン コードをバッククォートでマーク ( ` ) ``
私のパーサーは、何らかの理由で二重のバッククォートを完全にスキップしているようです。インライン コード解析を行う関数のコードは次のとおりです。
private string ParseInlineCode(string input)
{
for (int i = 0; i < input.Length; i++)
{
if (input[i] == '`' && input[i - 1] != '\\')
{
if (input[i + 1] == '`')
{
string str = ReadToCharacter('`', i + 2, input);
while (input[i + str.Length + 2] != '`')
{
str += ReadToCharacter('`', i + str.Length + 3, input);
}
string tbr = "``" + str + "``";
str = str.Replace("&", "&");
str = str.Replace("<", "<");
str = str.Replace(">", ">");
input = input.Replace(tbr, "<code>" + str + "</code>");
i += str.Length + 13;
}
else
{
string str = ReadToCharacter('`', i + 1, input);
input = input.Replace("`" + str + "`", "<code>" + str + "</code>");
i += str.Length + 13;
}
}
}
return input;
}
何かを単一のバッククォートで囲むと、<code>
タグで正しくラップされます。