• 读取txt文件,并用其他格式显示


    这篇博客参照http://www.cnblogs.com/insus/archive/2013/08/08/3247078.html

    题目是这样的:

    一个txt文件,内容格式:

    39.4% 2013-07-09 15-38-79

    35.7 2013-08-09 15-38-59

    39.4% 2013-07-09 15-38-79

    35.7 2013-08-09 15-38-59

    39.4% 2013-07-09 15-38-79

    35.7 2013-08-09 15-38-59

    39.4% 2013-07-09 15-38-79

    35.7 2013-08-09 15-38-59

    39.4% 2013-07-09 15-38-79 35.7 2013-08-09 15-38-59

    现在要想这样输出:

    |39.4%|2013-07-0915-38-79|35.7|2013-08-0915-38-59|
    |35.7|2013-08-0915-38-59|39.4%|2013-07-0915-38-79|
    |35.7|2013-08-0915-38-59|35.7|2013-08-0915-38-59|

    直接贴代码:我的代码跟原帖由些不同。我的代码中用的是ref(不需先赋值,out得先赋值),另外我这里一个方法用的是静态函数,一个用非静态,其实道理都是一样。

     class Program
        {
            static void Main(string[] args)
            {
              string[] lines = File.ReadAllLines("../../ReadLineToAnotherTypeOfShow.txt"); 
    
              List<ChangeClass> ccList=new List<ChangeClass> ();
              ChangeClass ccItem = null;
    
              foreach(string line in lines)
              {
                   //方法一
                  //ChangeClass cc = new ChangeClass();
                  //cc.TryParse(line,ref ccItem);
                 //方法二
                  if( ChangeClass2.TryParse(line,ref ccItem)) 
                    ccList.Add(ccItem);
              }
    
    
    
              for (int i = 1; i < ccList.Count;i=i+2 )
              {
                Console.WriteLine("|"+ccList[i-1]+"|"+ccList[i]+"|");
              }
    
              Console.ReadKey();
              
            }
    
    
            
        }
    
        partial class ChangeClass
        {
            protected  string e1;
            protected  string e2;
    
            public ChangeClass() { }
            public ChangeClass(string e1,string e2)
            {
                this.e1 = e1;
                this.e2 = e2;
            }
    
            public bool TryParse(string singelLine,ref ChangeClass item)
            {
                if (string.IsNullOrEmpty(singelLine.Trim()))
                { 
                 return false;
                }
                string[] array = singelLine.Trim().Split(' ');
    
                if (array[0] == "" || array[1] == "" || array[2] == "")
                    return false;
    
                e1 = array[0].ToString();
                e2 = array[1] + array[2].ToString();
    
                item = new ChangeClass(e1,e2);
                return true;
            }
    
            public override string ToString()
            {
                return "" + e1 + "|" + e2 + "";
            }
    
        }
    
        partial class ChangeClass2
        {
            protected static string E1;
            protected static string E2;
    
            public ChangeClass2(string e1, string e2)
            {
                E1 = e1;
                E2 = e2;
            }
    
            public static bool TryParse(string singelLine, ref ChangeClass item)
            {
                if (string.IsNullOrEmpty(singelLine.Trim()))
                {
                    return false;
                }
                string[] array = singelLine.Trim().Split(' ');
    
                if (array[0] == "" || array[1] == "" || array[2] == "")
                    return false;
    
                E1 = array[0].ToString();
                E2 = array[1] + array[2].ToString();
    
                item = new ChangeClass(E1, E2);
                return true;
            }
    
            public override string ToString()
            {
                return "" + E1 + "|" + E2 + "";
            }
    
        }
    

      总结上面的几个知识点:1。从changclass2可以发现,其实静态变量也是可以通过构造函数赋值的。

                                          2、我们也可以通过静态的类型构造函数对静态赋值,但是,不能有参数,形如: static ChangeClass2(){E1=10;}//

    通过静态变量赋值,必须是常量。

                                          3、ref和out都引用同一个内存块,不同是,声明ref的变量不需赋值,而out变量要提前赋值;

                                          4.这个方法中还有一种思想:

                                                         通过foreach和迭代器结合,操作数组。我们通过在classchange类中重写头string()方法,导致在main()中调用console.writline(classchange的实例),会直接调用重写的头string()方法,从而输出我们自己想要的结果;

  • 相关阅读:
    C# 实现复杂对象的序列化与反序列化
    C#操纵XML文档(主要是应用程序的配置文件)
    滕王阁序——王 勃 (注:我至爱的一篇文章)
    SmartClient(智能客户端)学习笔记之——Smart Client基本学习资源
    listview按列自动排序的一点补充
    (转)SmartClient(智能客户端)学习笔记之——Microsoft Updater Application Block ApplicationUpdater assembly设计
    用超图实现城市给水的爆管分析
    .net2005中对asp.net中GridView的常用操作
    .net2003中对DataGrid的常用操作
    为DataGrid或者GridView或者DataList最前面增加一排序号
  • 原文地址:https://www.cnblogs.com/fjsnail/p/3247575.html
Copyright © 2020-2023  润新知