Загрузка страницы..
Красивый вывод кода C# в html
Пример программы на <span style="color: #28A84C">C#</span>
2014-03-20T08:03 20 марта 2014 08:03
Просмотров: 2341

Попробуем написать простое приложение, на языке C#, преобразователь кода для html.

Здесь представлено "решение в лоб". Конечно оно не единственно.

Ⅰ. Интерфейс

Создадим новый проект в VS 2012.

  • Открываем Visual Studio, выбираем

    "Файл->Создать->Проект..". Выбираем "Visual C#"- > "Приложение Windows Forms".

    Вводим имя проекта, допустим "CodeHtml", и нажимаем кнопку "Ok"

  • Добавим 2 RichTextBox'а и две кнопки(Button).

Ⅱ. Код

  • Создадим двойным нажатием по кнопке(button1), событие
     private void button1_Click(object sender, EventArgs e)
    {
    }
    
  • И запишем код:
    private void button1_Click(object sender, EventArgs e)
    {
    string s = richTextBox1.Text;
    int i = 0, j = 0;
    int k = 0;
    for (i = 0; i < s.Length; i++)
    {
    if (s[i].ToString() == "'")//Символы
    {
    k = i; i++;
    while (i < s.Length && s[i].ToString() == "'") i++;
    s = s.Insert(i + 1, "");//Добавляю 7 знаков 
    s = s.Insert(k, "");//Добавляю 28 знаков 
    i += 35;
    }
    else
    if (s[i] == '"')//Строки
    {
        k = i; i++;
        while (i < s.Length && s[i] != '"') i++;
        s = s.Insert(i + 1, "");//Добавляю 7 знаков 
        s = s.Insert(k, "");//Добавляю 28 знаков 
        i += 35;
    }
    else
        if (s[i] == '/')//Коментарии
        {
            if (i + 1 < s.Length)
                if (s[i + 1] == '/')
                {
                    k = i; i += 1;
                    while (i < s.Length && s[i] != '\n') i++;
                    s = s.Insert(i, "");//Добавляю 7 знаков 
                    s = s.Insert(k, "");//Добавляю 28 знаков 
                    i += 35;
                }
        }
        else if (s[i] == 'i')//int, if
        {
            if (i + 3 < s.Length)
                if (s[i + 1] == 'n' && s[i + 2] == 't' && (s[i + 3] == ' ' || s[i + 3] == '['))
                {
                    s = s.Insert(i + 3, "");//Добавляю 7 знаков 
                    s = s.Insert(i, "");//Добавляю 28 знаков 
                    i += 35;
                }
                else
    
                    if (s[i + 1] == 'f' && (s[i + 2] == ' ' || s[i + 2] == '('))
                    {
                        s = s.Insert(i + 2, "");//Добавляю 7 знаков 
                        s = s.Insert(i, "");//Добавляю 28 знаков 
                        i += 35;
                    }
        }
        else if (s[i] == 'f')//for
        {
            if (i + 3 < s.Length)
                if (s[i + 1] == 'o' && s[i + 2] == 'r' && (s[i + 3] == ' ' || s[i + 3] == '('))
                {
                    s = s.Insert(i + 3, "");//Добавляю 7 знаков 
                    s = s.Insert(i, "");//Добавляю 28 знаков 
                    i += 35;
                }
        }
        else if (s[i] == 'e')//for
        {
            if (i + 3 < s.Length)
                if (s[i + 1] == 'l' && s[i + 2] == 's' && s[i + 3] == 'e' && (s[i + 4] == ' ' || s[i + 4] == '(' || s[i + 4] == '\n'))
                {
                    s = s.Insert(i + 4, "");//Добавляю 7 знаков 
                    s = s.Insert(i, "");//Добавляю 28 знаков 
                    i += 35;
                }
        }
        else if (s[i] == 'w')//for
        {
            if (i + 5 < s.Length)
                if (s[i + 1] == 'h' && s[i + 2] == 'i' && s[i + 3] == 'l' && s[i + 4] == 'e' && (s[i + 5] == ' ' || s[i + 5] == '('))
                {
                    s = s.Insert(i + 5, "");//Добавляю 7 знаков 
                    s = s.Insert(i, "");//Добавляю 28 знаков 
                    i += 35;
                }
        }
        else if (s[i] == 's')//for
        {
            if (i + 6 < s.Length)
                if (s[i + 1] == 't' && s[i + 2] == 'r' && s[i + 3] == 'i' && s[i + 4] == 'n' && s[i + 5] == 'g' && (s[i + 6] == ' ' || s[i + 6] == '['))
                {
                    s = s.Insert(i + 6, "");//Добавляю 7 знаков 
                    s = s.Insert(i, "");//Добавляю 28 знаков 
                    i += 35;
                }
        }
    }
    richTextBox2.Text = s;
    }
    

Ⅲ. Запуск

Нажимаем F5 проверяя работоспособность.

Если, что то не получилось, то вот исходник.

P.S.

Для удобства пользование сделаем кнопку копирования в буфер обмена готового текста.
Для �того добавим код во вторую кнопку:

private void button2_Click(object sender, EventArgs e)
{
    Clipboard.SetDataObject(richTextBox2.Text);
}

Ну вот и все. Спасибо за внимание :)



Комментарии: 0

Коментарий пока нет, стань первым!

Добавить комментарий

Яндекс.Метрика Яндекс.Метрик