目录
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