none
c#問題 RRS feed

  • 問題

  • 各位高手 想請問一下 以下程式目前是建立在主控台應用程式

    功能是

    X10.2Z10.31    

    SSF11EWQ

    SAVVSS

    GRWW QD

    Z10F1000

    X10.2Z20.62B-20.62 

    SSF11EWQ

    SAVVSS

    GRWW QD

    Z20B-20F1000

    但我想改寫在windows form 應用程式

    不知各位高手有沒有什麼建議  類似最下方程式讀取檔案的是用windows form 設計的 或是該程式該怎改 才能將上述功能(主控台應用程式)部分改寫進去 

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.Text.RegularExpressions;

     

    namespace ConsoleApplication1

    {

        class Program

        {

            static void Main(string[] args)

            {

               List<string> testLists = new List<string>() {

         "X10.2Z10.31"     

         ,"SSF11EWQ"

         ,"SAVVSS"

         ,"GRWW QD"

         ,"Z10F1000"

         };

         Console.WriteLine("*** Before ***");

         foreach (string s in testLists)

         {

             Console.WriteLine(s);

         }

         Console.WriteLine("*** After ***");

         foreach (string s in testLists)

         {

             Console.WriteLine(ZMultiply(s));

         }

         Console.ReadKey();

    }

     

     

            static string ZMatchReplace(Match m)

            {

                string result = m.ToString();

                string zSubPattern = @"[\d+(\.\d+)]+[\d+]+";

                Regex rx = new Regex(zSubPattern);

                result = rx.Replace(result, new MatchEvaluator(ZMatchReplaceDigi));

                return result ;

            }

     

        static string ZMatchReplaceDigi(Match m)

        {

            string result = m.ToString();

            decimal digiValue =0 ;

            decimal.TryParse(result, out digiValue);

            //要乘的數值

           

            const int x = 2;

            return (digiValue * x).ToString() + "B"+"-"+(digiValue * x).ToString();

        }

    static string ZMultiply(string orgValue)

    {

        string z樣式 = @"[z][\d+(\.\d+)]+[\d+]+";

        Regex rx = new Regex(z樣式, RegexOptions.IgnoreCase);

        string result = rx.Replace(orgValue, new MatchEvaluator(ZMatchReplace));

        return result;

    }

            }

        }

    windows form 應用

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
           
            string savefile;//存檔用
            StreamWriter sw;//存檔用
            string line;//讀取檔案
          

            private void button1_Click(object sender, EventArgs e)
            {
                {
                    //建立讀檔功能
                    Stream myStream = null;
                    OpenFileDialog openFileDialog1 = new OpenFileDialog();
                    openFileDialog1.InitialDirectory = "c:\\";
                    openFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
                    openFileDialog1.FilterIndex = 2;
                    openFileDialog1.RestoreDirectory = true;
                    
                    //確認是否成功開啟讀檔功能
                    if (openFileDialog1.ShowDialog() == DialogResult.OK)
                    {
                        try
                        {
                            if ((myStream = openFileDialog1.OpenFile()) != null)//確認讀檔功能是否正常
                            {
                                using (myStream)
                                {
                                    string path = openFileDialog1.FileName;//記錄讀檔名稱
                                    StreamReader sr = new StreamReader(path);//讀檔功能
                                    savefile = @Application.StartupPath + "\\" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".txt";//設定存檔位置
                                    sw = new StreamWriter(savefile, true);//設定存檔於同一位置

                                    while (!sr.EndOfStream)//當讀取檔案的文件沒問題時進行後續分析
                                    {
                                        line = sr.ReadLine();//開始進行每行讀取

                                        if (line.Contains("Z"))//確認是否有大寫Z存在
                                        {
                                            string www = Convert.ToString(line.IndexOf("Z"));//找Z的位置
                                            string strTarget = line.Insert(line.IndexOf("Z") + 1, "GOOD");//在Z的後面加入GOOD
                                            label1.Text += strTarget + "\n";//顯示結果在LABEL1
                                            sw.WriteLine(strTarget);//將修改後的結果寫入檔案
                                        }
                                        else
                                        {
                                            label1.Text += line + "\n";//將不含Z的程式顯示在LABEL1
                                            sw.WriteLine(line);//將不含Z的程式寫入檔案
                                        }
                                        
                                    }
                                    sw.Close();//關閉寫入檔案
                                }
                            }
                        }
                        catch (Exception ex)//讀取時找不到檔案顯示如下
                        {
                            MessageBox.Show("找不到正確檔案" + ex.Message);

    2014年11月21日 上午 07:31

所有回覆

  • if (line.Contains("Z"))//確認是否有大寫Z存在
    {
                                            //string www = Convert.ToString(line.IndexOf("Z"));//找Z的位置
                                            //string strTarget = line.Insert(line.IndexOf("Z") + 1, "GOOD");//在Z的後面加入GOOD
                                            label1.Text += strTarget + "\n";//顯示結果在LABEL1
                                            //sw.WriteLine(strTarget);//將修改後的結果寫入檔案
    
                                            sw.WriteLine(ZMultiply(line));
    
    }              

    把那些Regex的函式,複製貼上到Windows Form應用程式就好了啊...

    • 已提議為解答 KKBruceMVP 2014年11月21日 上午 08:07
    2014年11月21日 上午 07:56
  • 我已嘗試過但問題很多

    可否請您示範一下謝謝

    2014年11月21日 上午 09:00
  •         static string ZMatchReplace(Match m)

            {

                string result = m.ToString();

                string zSubPattern = @"[\d+(\.\d+)]+[\d+]+";

                Regex rx = new Regex(zSubPattern);

                result = rx.Replace(result, new MatchEvaluator(ZMatchReplaceDigi));

                return result ;

            }

     

        static string ZMatchReplaceDigi(Match m)

        {

            string result = m.ToString();

            decimal digiValue =0 ;

            decimal.TryParse(result, out digiValue);

            //要乘的數值

           

            const int x = 2;

            return (digiValue * x).ToString() + "B"+"-"+(digiValue * x).ToString();

        }

    static string ZMultiply(string orgValue)

    {

        string z樣式 = @"[z][\d+(\.\d+)]+[\d+]+";

        Regex rx = new Regex(z樣式RegexOptions.IgnoreCase);

        string result = rx.Replace(orgValue, new MatchEvaluator(ZMatchReplace));

        return result;

    }

            private void button1_Click(object sender, EventArgs e)
            {

    //略

    }

    您應該把問題貼上來,或把整個專案壓縮上傳到網路空間如OneDrive,讓大家試試...

    2014年11月21日 上午 09:07