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 指定浮点数转化为字符串的位数
1. Convert.ToDouble(10.233333).ToString("N3"); 2. //指定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