public TokenMd GetToken(string text, int index, out int finalIndex) { var isEnd = false; helper = new ParseHelper(); mark = new ItalicMark(); var builder = new StringBuilder(); finalIndex = index; builder = helper.AppendMarkSymbols(builder, text, finalIndex, out finalIndex, mark.DefiningSymbol); while (finalIndex < text.Length && !helper.IsSymbols(finalIndex, text, Environment.NewLine) && !isEnd) { isEnd = text[finalIndex] == '_' && text[finalIndex - 1] != '_' && (finalIndex + 1 >= text.Length || finalIndex + 1 < text.Length && text[finalIndex + 1] != '_' && !char.IsWhiteSpace(text[finalIndex - 1])); builder = helper.AppendSymbol(builder, text, finalIndex, out finalIndex); } return(GetResultToken(builder.ToString(), isEnd)); }