Написать комментарии - C#
Формулировка задачи:
Здравствуйте. Требуется написать комментарии фактически к каждой строчке данного кода.
private void button2_Click(object sender, EventArgse)//
{
RemoveAllComments (lFile.Text);
}
private void RemoveAllComments(string filename)
{
StringBuilder content = new StringBuilder();
content.Append(File.ReadAllText(filename));
RemoveComments(content, "/*", "*/");
RemoveComments(content, "/// <summary>", "/// </summary>");
RemoveComments(content, "//", Environment.NewLine);
File.WriteAllText(filename + ".txt", content.ToString());
MessageBox.Show(string.Format("Создан файл {0}.txt", filename));
}
private void RemoveComments(StringBuilder content, string start, string end)
{
string contentStr;
int startIndex = 0;
int endIndex = 0;
//длина концовки;
//если мы ищем однострочный комментарий значит длина концовки равна нулю
int endLength = (end == Environment.NewLine) ? 0 : end.Length;
while (true)
{
contentStr = content.ToString();
startIndex = contentStr.IndexOf(start);
endIndex = (startIndex != -1) ? contentStr.IndexOf(end, startIndex) : -1;
if (startIndex != -1 && endIndex != -1)
{
content.Remove(startIndex, endIndex + endLength - startIndex);
}
//если нашелся только начальный индекс и мы удаляем однострочный комментарий
//значит после комментария идет конец файла, в таком случае удаляем все
//начиная со startIndex
else if (startIndex != -1 && end == Environment.NewLine)
{
content.Remove(startIndex, content.Length - startIndex);
}
//если не найден ни один индекс завершаем поиск
else
{
break;
}
}
}Решение задачи: «Написать комментарии»
textual
Листинг программы
//вызов обработчика нажатия кнопки button2
private void button2_Click(object sender, EventArgse)
{
//вызов метода RemoveAllComments (Удалить все комментарии) с параметром
RemoveAllComments (lFile.Text);
}
// Объявление метода RemoveAllComments принимающего параметр filename
private void RemoveAllComments(string filename)
{
//создание новой строки - инциализация
StringBuilder content = new StringBuilder();
// Заполняем строку текстом из файла
content.Append(File.ReadAllText(filename));
//вызов метода RemoveComments с различными параметрами
//Многострочный коментарий
RemoveComments(content, "/*", "*/");
//коментарий описания
RemoveComments(content, "/// <summary>", "/// </summary>");
//Однострочный коментарий
RemoveComments(content, "//", Environment.NewLine);
//Сохраняем файл без комментариев в формате txt
File.WriteAllText(filename + ".txt", content.ToString());
//Пользовательское сообщение об успешности выполнения и именем файла
MessageBox.Show(string.Format("Создан файл {0}.txt", filename));
}
// Объявление метода RemoveComments принимающего параметры строку, начало, конец
private void RemoveComments(StringBuilder content, string start, string end)
{
//инициализация переменных
string contentStr;
int startIndex = 0;
int endIndex = 0;
//длина концовки;
//если мы ищем однострочный комментарий значит длина концовки равна нулю
int endLength = (end == Environment.NewLine) ? 0 : end.Length;
while (true)
{
//присваиваем переменным значение из параметров
//заносим в строковую переменную значение параметра content
contentStr = content.ToString();
//получам индекс начала
startIndex = contentStr.IndexOf(start);
//определение индекса конца
endIndex = (startIndex != -1) ? contentStr.IndexOf(end, startIndex) : -1;
//если startIndex != -1 И endIndex != -1
//для много строчных комментариев
if (startIndex != -1 && endIndex != -1)
{
//Удаляем комментарии в строке с начального до (конец+длина-начальный индекс)
content.Remove(startIndex, endIndex + endLength - startIndex);
}
//если нашелся только начальный индекс и мы удаляем однострочный комментарий
//значит после комментария идет конец файла, в таком случае удаляем все
//начиная со startIndex
else if (startIndex != -1 && end == Environment.NewLine)
{
content.Remove(startIndex, content.Length - startIndex);
}
//если не найден ни один индекс завершаем поиск
else
{
break;
}
}
}