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

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

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

Нашел задачку, условие: Необходимо написать программу, которая считает количество строк в файле содержищем код на языке С/С++/C# без учета комментариев и пустых строк. Комментарии могут быть однострочные (//) и многострочные (/**/). Пустой строкой считается строка, которая не содержит ни одного символа, либо содержащая только пробельные символы (пробелы, символы табуляции). Программа должна принимать один параметр - имя файла для обработки и возвращать количество строк кода. Пример Входной файл:
/**
 * @author Sergey Yatsuk
 * @version $Id: Exp $
 */
 
int main()
{
  // main function
   return 0;
}
Результат: 4 При помощи гугла и МСДНа написал такой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
 
namespace ReadingFile
{
    class Program
    {
        static void Main(string[] args)
        {
            int numberOfStringWithCode = 0;
            try
            {
                string[] lines = File.ReadAllLines("test.cs");
                foreach (string line in lines)
                {
                    line.Trim();
                    if (!line.StartsWith("/") && !line.StartsWith("/*") && !line.StartsWith("*")&& !(line.Length==0))
                    {
                        numberOfStringWithCode++;
                        Console.WriteLine("{0} : {1}", line, numberOfStringWithCode);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("File cannot be read!");
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine(numberOfStringWithCode);
            Console.ReadLine();
        }
    }
}
Но есть проблема, программа видит строку " // main function" как ту, которую надо засчитывать как код, хотя в условии есть четкое условие "!line.StartsWith("/")". Если убрать пробелы перед " // main function", то прога её не считает, то, что мне и надо. Читаю на МСДН o string.Trim():
Удаляет все начальные и конечные знаки пробела из текущего объекта String.
Вообщем непонятно(

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

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

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


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

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

5   голосов , оценка 3.8 из 5
Похожие ответы