C#编程学习11:几个常用的操作总结

 

目录

1 图像占据实际内存大小计算

2 输出包含日期的文件路径:

3 编辑框控件以追加方式显示信息

4 根据指定字符串提取指定目录下所有符合要求的文件路径名

5 指定浮点数转化为字符串的位数

6 向文本中写数据流

7 从文本中读取数据

8 判断输入数据是否为数值

8.1 使用正则表达式的做法:

8.2正则表达式方案二

8.3 不使用正则正则表达式的做法:

8.4 常用的正则表达式总结


1 图像占据实际内存大小计算

图像占内存空间大小 = 分辨率 * 位深 / 8
分辨率=宽*高(如:1024*768,640*480)
位深:如24位,16位,8位
/8计算的是字节数。
例如:
一幅图像分辨率:1024*768,24位,则其大小计算如下:
大小=1024*768824/8=2359296byte=2304KB

2 输出包含日期的文件路径:

路径构成为:指定目录+当前日期+当前时分秒表示字符串+自定义字符串+文件后缀

string fileName = fileDir + "\\" + DateTime.Now.ToLongDateString() + DateTime.Now.ToLongTimeString().Replace(":", "-") + "数据输出" + ".xls";

一些其他的操作

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DATETIMEtest
{
    class Program
    {
        static void Main(string[] args)
        {
            //DateTime dt = DateTime.Now;
            DateTime dt = Convert.ToDateTime("2020-10-22 21:18:36");
            //获取今天是周几
            Console.WriteLine("Taday is  " + dt.DayOfWeek.ToString());
            //将周几的英文转化成数字
            Console.WriteLine("Taday is  " + dt.DayOfWeek.ToString("d"));
            Console.WriteLine("Taday is  " + int.Parse(dt.DayOfWeek.ToString("d")));

            //获取5天后是周几
            Console.WriteLine("5 天后是  " + dt.AddDays(5).DayOfWeek.ToString("d"));
            Console.WriteLine("5 天前是  " + dt.AddDays(-5).DayOfWeek.ToString("d"));

            //获取月初的信息
            Console.WriteLine("今天是这个月的第" + dt.Day + "天");
            Console.WriteLine("本月是" + dt.AddDays(1 - dt.Day).Month + "月");
            Console.WriteLine("本月有" + dt.AddDays(1 - dt.Day).AddMonths(1).AddDays(-1).Day + "天");
            
            //简单的方法
            //月初
            Console.WriteLine(dt.ToString("yyyy-MM-01"));
            //上月初
            Console.WriteLine(dt.AddMonths(-1).ToString("yyyy-MM-01"));
            
            Console.ReadKey();
        }
    }
}

3 编辑框控件以追加方式显示信息

txt_myString.Text = "";

txt_myString.AppendText ="";//以追加方式在编辑框控件中添加信息

此时建议将编辑框的MultiLine属性设置为True,将ScrollBars属性的滚动天设置为适当的格式

应用场景:以字符串形式输出程序的运行进度信息

4 根据指定字符串提取指定目录下所有符合要求的文件路径名

        /// <summary>
        /// 根据文件拓展名筛选满足要求的文件
        /// </summary>
        /// <param name="dir"></param 目录名称>
        /// <param name="selFileNames"></param 选定文件名集合>
        /// <param name="fileExtend"></param 待筛选文件拓展名>
        private void getFileNameByExtend(string dir, List<string> selFileNames, string fileExtend)
        {
            string[] fileNames = Directory.GetFiles(dir).Where(x => x.EndsWith(fileExtend)).ToArray();
            foreach (string str in fileNames)
            {
                selFileNames.Add(str);
            }
            DirectoryInfo[] directs = new DirectoryInfo(dir).GetDirectories();
            foreach (DirectoryInfo dr in directs)
            {
                getFileNameByExtend(dr.FullName, selFileNames, fileExtend);
            }
        }      

5 指定浮点数转化为字符串的位数

Convert.ToDouble(10.233333).ToString("N3");
//指定3为小数,以字符串形式输出

6 向文本中写数据流

StreamWriter s = new StreamWriter(address + "\\History.ini", true);//创建流写入器对象
s.WriteLine(openFileDialog1.FileName);//向文件中写入历史信息
s.Flush();//将信息压入流
s.Close();//关闭流

7 从文本中读取数据

StreamReader sr = new StreamReader(address + "\\History.ini", ,Encoding.GetEncoding("gb2312"));//确保中文文本可被识别
while (sr.Peek()>=0)//循环读取流中文本
{
    string data = sr.ReadLine());
}
sr.Close();

8 判断输入数据是否为数值

8.1 使用正则表达式的做法:

//此法缺陷在于只能转换正数,对于浮点数或科学技术法表述的字符串无法识别
public int IsNumeric(string str)
{
      int i;
      if(str != null && Regex.IsMatch(str,@"^\d+$"))
               i = int.Parse(str);
      else
                i = -1;
        return i;
} 

8.2正则表达式方案二

public static bool IsInt(string inString)
{
   Regex regex = new Regex("^[0-9]*[1-9][0-9]*$");
   return regex.IsMatch(inString.Trim());
}

8.3 不使用正则正则表达式的做法:

//判断函数
public bool IsNumeric(string s, out double result)
{
   bool bReturn = true;
   try
   {
        result = double.Parse(s);
   }
   catch
   {
        result = 0;
       bReturn = false;
   }
   return bReturn;      
}

//测试代码
string s1="abc";
string s2="-3.14159E+10";
double d1,d2;
bool ty1 = IsNumeric(s1,out d1);
bool ty2 = IsNumeric(s2,out d2);

//测试结果
ty1=false;d1=0;
ty2=true;d2=31415900000

8.4 常用的正则表达式总结

"^\\d+$"  //非负整数(正整数 + 0)  
"^[0-9]*[1-9][0-9]*$"  //正整数    
"^((-\\d+)|(0+))$"  //非正整数(负整数 + 0)    
"^-[0-9]*[1-9][0-9]*$"  //负整数    
"^-?\\d+$"    //整数    
"^\\d+(\\.\\d+)?$"  //非负浮点数(正浮点数 + 0)    
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"   
//正浮点数    
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮点数(负浮点数 + 0)    
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"   
//负浮点数    
"^(-?\\d+)(\\.\\d+)?$"  //浮点数    
"^[A-Za-z]+$"  //由26个英文字母组成的字符串    
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串    
"^[a-z]+$"  //由26个英文字母的小写组成的字符串    
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串    
"^\\w+$"  //由数字、26个英文字母或者下划线组成的字符串    
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址    
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小薛引路

喜欢的读者,可以打赏鼓励一下

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值