Не логичное поведение string.StartsWith() или string.Trim() - C#
Формулировка задачи:
Нашел задачку, условие:
Необходимо написать программу, которая считает количество строк в файле содержищем код на языке С/С++/C# без учета комментариев и пустых строк.
Комментарии могут быть однострочные (//) и многострочные (/**/). Пустой строкой считается строка, которая не содержит ни одного символа, либо содержащая только пробельные символы (пробелы, символы табуляции).
Программа должна принимать один параметр - имя файла для обработки и возвращать количество строк кода.
Пример
Входной файл:
Результат:
4
При помощи гугла и МСДНа написал такой код:
Но есть проблема, программа видит строку " // main function" как ту, которую надо засчитывать как код, хотя в условии есть четкое условие "!line.StartsWith("/")". Если убрать пробелы перед " // main function", то прога её не считает, то, что мне и надо. Читаю на МСДН o string.Trim():
Вообщем непонятно(
/**
* @author Sergey Yatsuk
* @version $Id: Exp $
*/
int main()
{
// main function
return 0;
}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();
}
}
}
Удаляет все начальные и конечные знаки пробела из текущего объекта String.
Решение задачи: «Не логичное поведение string.StartsWith() или string.Trim()»
textual
Листинг программы
Console.WriteLine("hello"); Console.WriteLine("i like you");