2016-10-13 2 views
-1

Эй, я хочу, чтобы создать окна приложения, которые должны отображаться на общие линии, Пустые строки и строки комментариев. Я могу рассчитать Total Lines, может ли кто-нибудь помочь мне с логикой для пустых строк и прокомментированных строк!C# Windows Application LOC_Counter

Я хочу, чтобы подсчитать строки кода, для любого файла, т.е. .html, .css, .cs и т.д.

Кроме того, если это возможно, я хочу, чтобы результат можно экспортировать в Excel файл!


using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO; 

namespace Line_Counter 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
     OpenFileDialog ofd = new OpenFileDialog(); 
      textbox1.Clear(); 
      textbox2.Clear(); 
      if (ofd.ShowDialog() == DialogResult.OK) 
      { 
       string strFilename = ofd.FileName; 
       textbox1.Text = Path.GetFileName(strFilename); 
       StreamReader sr = File.OpenText(strFilename); 

       int nLineCount = 0; 
       while (sr.ReadLine() != null) 
       { 
        nLineCount++;  
       } 


       textbox1.Text = nLineCount.ToString("0,0"); 
       sr.Close(); 
      } 
     } 

     private void txtFileName_TextChanged(object sender, EventArgs e) 
     { 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 


    } 

}


Я хочу больше текстовых полей, которые должны отображаться количество пустых строк, строки комментариев, и, наконец, общее количество (т.е. вычитая нет. Пустых строк и комментировал линии от общего количества строк)

Если возможно, одно нажатие кнопки button_click для всех или всех в одном. enter image description here

+0

Что вы пробовали и где именно вы застряли? Код, который вы отправили, учитывает только общие строки ... – bassfader

+0

Да, мне нужно подсчитать пустые строки, а также прокомментированные строки. ------------------------------------------------- ------------------------------------------ если (str! = Null && str.Length> 0 && (str.Length> 2 && str.Substring (0, 2)! = "//") && (str.Length> 3 && str.Substring (0, 4)! = "

ответ

0
using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.IO; 

namespace LOC_Counter 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     void getFileList(string directory) 
     { 
      string[] dirs = Directory.GetDirectories(directory); 

      foreach (string dir in dirs) 
      { 
       getFileList(dir); 
      } 
      string[] files = Directory.GetFiles(directory); 
      foreach (string file in files) 
      { 

       StreamReader sr = File.OpenText(file); 

       int nLineCount = 0; 
       string str = string.Empty; 
       while (!sr.EndOfStream) 
       { 
        str = sr.ReadLine(); 
        if (str != null && str.Length > 0 && (str.Length > 2 && str.Substring(0, 2) != "//") && (str.Length > 3 && str.Substring(0, 4) != "<!--")) 
        nLineCount++; 
       } 
       lstbxResult.Items.Add(file + "    Line count - " + nLineCount); 

      } 



     } 

     private void btnBrowse_Click(object sender, EventArgs e) 
     { 
      FolderBrowserDialog FBD = new FolderBrowserDialog(); 

      if (FBD.ShowDialog() == DialogResult.OK) 
      { 

       lstbxResult.Items.Clear(); 
       getFileList(FBD.SelectedPath); 

      } 
     } 

     public static void ExportToExcel(ListBox lst, string excel_file) 
     { 
      int cols; 
      //open file 
      StreamWriter wr = new StreamWriter(excel_file); 

      //write rows to excel file 
      for (int i = 0; i < (lst.Items.Count - 1); i++) 
      { 
       wr.Write(lst.Items[i].ToString() + "\t"); 

       wr.WriteLine(); 
      } 

      //close file 
      wr.Close(); 
     } 

     private void btnExit_Click(object sender, EventArgs e) 
     { 
      this.Close(); 
     } 
    } 
}