Не логичное поведение string.StartsWith() или string.Trim() - C#

Узнай цену своей работы

Формулировка задачи:

Нашел задачку, условие: Необходимо написать программу, которая считает количество строк в файле содержищем код на языке С/С++/C# без учета комментариев и пустых строк. Комментарии могут быть однострочные (//) и многострочные (/**/). Пустой строкой считается строка, которая не содержит ни одного символа, либо содержащая только пробельные символы (пробелы, символы табуляции). Программа должна принимать один параметр - имя файла для обработки и возвращать количество строк кода. Пример Входной файл:
Листинг программы
  1. /**
  2. * @author Sergey Yatsuk
  3. * @version $Id: Exp $
  4. */
  5. int main()
  6. {
  7. // main function
  8. return 0;
  9. }
Результат: 4 При помощи гугла и МСДНа написал такой код:
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. namespace ReadingFile
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. int numberOfStringWithCode = 0;
  13. try
  14. {
  15. string[] lines = File.ReadAllLines("test.cs");
  16. foreach (string line in lines)
  17. {
  18. line.Trim();
  19. if (!line.StartsWith("/") && !line.StartsWith("/*") && !line.StartsWith("*")&& !(line.Length==0))
  20. {
  21. numberOfStringWithCode++;
  22. Console.WriteLine("{0} : {1}", line, numberOfStringWithCode);
  23. }
  24. }
  25. }
  26. catch (Exception ex)
  27. {
  28. Console.WriteLine("File cannot be read!");
  29. Console.WriteLine(ex.Message);
  30. }
  31. Console.WriteLine(numberOfStringWithCode);
  32. Console.ReadLine();
  33. }
  34. }
  35. }
Но есть проблема, программа видит строку " // main function" как ту, которую надо засчитывать как код, хотя в условии есть четкое условие "!line.StartsWith("/")". Если убрать пробелы перед " // main function", то прога её не считает, то, что мне и надо. Читаю на МСДН o string.Trim():
Удаляет все начальные и конечные знаки пробела из текущего объекта String.
Вообщем непонятно(

Решение задачи: «Не логичное поведение string.StartsWith() или string.Trim()»

textual
Листинг программы
  1.    Console.WriteLine("hello"); Console.WriteLine("i like you");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы