C#知识点总结
这是我在开发了这几年的时间中,总结出来一些知识点,个人感觉一边开发一边总结真的是一个非常好的习惯,特别有助于个人技术的提高……
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI.HtmlControls;
using System.Web.UI;
using System.Text.RegularExpressions;
namespace Common
{
public class Validate
{
private static readonly Regex RegPhone =
new Regex("(^(\\d{11})$|^((\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1})|(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1}))$)"); //电话号码和手机验证
private static Regex RegEmail = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@([\\w-]+\\.)+\\w{2,3})\\s*$"); //w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
private static Regex RegNum = new Regex("^[0-9]+$");
//必须是数字正则表达式(小数或整数)
private static Regex regex = new Regex(@"/^[0-9]+\.?[0-9]{0,3}$/");
/// <summary>
/// 身份证正值表达式
/// </summary>
private static readonly Regex RegCardId = new Regex("(^\\d{15}$)|(^\\d{17}([0-9]|X|x)$)");
#region 确定用户输入是否合法
/// <summary>
/// 确定用户输入是否合法
/// </summary>
/// <param name="text">用户输入字符串</param>
/// <param name="maxLength">最大字符串长度</param>
/// <returns></returns>
public static string InputText(string text, int maxLength)
{
if (string.IsNullOrEmpty(text))
return string.Empty;
text = text.Trim();
if (maxLength != 0)
if (text.Length > maxLength)
text = text.Substring(0, maxLength);
text = Regex.Replace(text, "[\\s]{2,}", " ");
text = Regex.Replace(text, "(<[b|B][r|R]/*>)+|(<[p|P](.|\\n)*?>)", "\n");
text = Regex.Replace(text, "(\\s*&[n|N][b|B][s|S][p|P];\\s*)+", " ");
//text = Regex.Replace(text, "<(.|\\n)*?>", string.Empty); //屏蔽标签
text = text.Replace("'", "''");
return text;
}
#endregion
#region 验证电话号码
// 电话号码和手机号码检查
/// <summary>
/// 电话号码和手机号码检查
/// </summary>
/// <param name="inputData">电话号码或手机号码</param>
/// <returns>匹配结果</returns>
public static bool IsPhone(string inputData)
{
Match m = RegPhone.Match(inputData);
return m.Success;
}
#endregion
#region 验证参数是否为中文字符
/// <summary>
/// 验证参数是否为中文字符
/// </summary>
/// <param name="input">输入参数</param>
/// <returns></returns>
public static bool IsChinese(string input)
{
Regex regex = new Regex(@"[\u4e00-\u9fa5]", RegexOptions.IgnoreCase);
return regex.IsMatch(input);
}
#endregion
#region 邮件地址
/// <summary>
/// 邮件地址验证
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns>验证结果</returns>
public static bool IsEmail(string inputData)
{
Match m = RegEmail.Match(inputData);
return m.Success;
}
#endregion
#region 是否为数字
/// <summary>
/// 是否为数字
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns>是否为数字</returns>
public static bool IsNum(string inputData)
{
if(string.IsNullOrEmpty(inputData))
{
return false;
}
Match m = RegNum.Match(inputData);
return m.Success;
}
/// <summary>
/// 判断是否是整数或小数
/// </summary>
/// <param name="str">输入的字符串</param>
/// <returns>是否为数字</returns>
public static bool IsNumAll(string str)
{
if (string.IsNullOrEmpty(str))
{
return false;
}
Match m = regex.Match(str);
return m.Success;
}
#endregion
#region 是否为身份证
/// <summary>
/// 是否为身份证
/// </summary>
/// <param name="inputData">输入字符串</param>
/// <returns>是否为身份证</returns>
public static bool IsCardId(string inputData)
{
Match m = RegCardId.Match(inputData);
return m.Success;
}
#endregion
/// <summary>
/// 判断字符串是否是纯数字
/// </summary>
/// <param name="message">源字符串</param>
/// <returns></returns>
public static bool IsNumberic(string message)//, out int result
{
System.Text.RegularExpressions.Regex rex =
new System.Text.RegularExpressions.Regex(@"^\d+$");
var result = -1;
if (rex.IsMatch(message))
{
result = int.Parse(message);
return true;
}
else
return false;
}
/// <summary>
/// 截取字符串
/// </summary>
/// <param name="number">截取多少位</param>
/// <param name="str">原字符串</param>
/// <returns></returns>
public static string InterceptionBytes(int number, string str)
{
//4*6 24 -2 22*2=44 44ge 字节 43
if (str == null)
return "";
var result = new StringBuilder();
var count = 0;
if (Encoding.GetEncoding("GB2312").GetByteCount(str) <= number)
{
return str;
}
foreach (char t in str)
{
if (Encoding.GetEncoding("GB2312").GetByteCount(new[] { t }) == 2)
{
count += 2;
result.Append(t);
}
else if (Encoding.GetEncoding("GB2312").GetByteCount(new[] { t }) == 1)
{
count += 1;
result.Append(t);
}
else
{
count += 3;
result.Append(t);
}
if (count >= (number - 2))
break;
}
result.Append("...");
return result.ToString();
}
/// <summary>
/// 返回指定位数的随机密码(数字和字母的组合)
/// </summary>
/// <param name="median">密码位数(非负数)</param>
/// <returns>string</returns>
public static string GetPassword(int median)
{
Random ra = new Random();
string str = "";
string newstr = "";
int l1 = median / 3;
int l2 = median / 3;
int l3 = median / 3 + median % 3;
int[] lower = new int[l1];//小写字母
int[] upper = new int[l2];//大写字母
int[] num = new int[l3]; //数字
byte[] bs1 = new byte[l1]; //存放小写字母
byte[] bs2 = new byte[l2]; //存放大写字母
Encoding en = Encoding.Default;
#region //初始化随机数和字母
for (int i = 0; i < lower.Length; i++)
{
lower[i] = ra.Next(65, 91);
bs1[i] = byte.Parse(lower[i].ToString());
}
for (int j = 0; j < upper.Length; j++)
{
upper[j] = ra.Next(97, 123);
bs2[j] = byte.Parse(upper[j].ToString());
}
for (int k = 0; k < num.Length; k++)
{
num[k] = ra.Next(0, 10);
}
#endregion
string tempnum = num.Aggregate("", (current, t) => current + t);
//拼接成临时字符串,方便按照下标取值
str += en.GetString(bs1) + en.GetString(bs2) + tempnum;
List<string> li = new List<string>();
for (int a = 0; a < str.Length; a++)
{
li.Insert(a, str[a].ToString());
}
while (li.Count != 0)
{
var count = ra.Next(0, li.Count);
newstr += li[count];
li.RemoveAt(count);
}
return newstr;
}
/// <summary>
/// 加密处理
/// </summary>
/// <param name="Input"></param>
/// <returns></returns>
public static string Encrypt(string Input)
{
try
{
var des = new DESCryptoServiceProvider();
var inputByteArray = Encoding.UTF8.GetBytes(Input);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateEncryptor(Key, Iv), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception)
{
return "";
}
}
/// <summary>
/// 解密处理
/// </summary>
/// <param name="Input"></param>
/// <returns></returns>
public static string Decrypt(string Input)
{
if (!string.IsNullOrEmpty(Input))
{
Input = Input.Replace(" ", "+");
try
{
var des = new DESCryptoServiceProvider();
var inputByteArray = Convert.FromBase64String(Input);
var ms = new MemoryStream();
var cs = new CryptoStream(ms, des.CreateDecryptor(Key, Iv), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
var encoding = Encoding.UTF8;
return encoding.GetString(ms.ToArray());
}
catch (Exception)
{
return "";
}
}
return "";
}
#region 全角半角转换
/// <summary>
/// 转全角的函数(SBC case)
/// </summary>
/// <param name="input">任意字符串</param>
/// <returns>全角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToSBC(string input)
{
//半角转全角:
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 32)
{
c[i] = (char)12288;
continue;
}
if (c[i] < 127)
c[i] = (char)(c[i] + 65248);
}
return new string(c);
}
/// <summary> 转半角的函数(DBC case) </summary>
/// <param name="input">任意字符串</param>
/// <returns>半角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToDBC(string input)
{
char[] c = input.ToCharArray();
for (int i = 0; i < c.Length; i++)
{
if (c[i] == 12288)
{
c[i] = (char)32;
continue;
}
if (c[i] > 65280 && c[i] < 65375)
c[i] = (char)(c[i] - 65248);
}
return new string(c);
}
#endregion
/// <summary>
/// 返回全路徑文件名稱
/// </summary>
/// <param name="folderPath"></param>
/// <param name="fileName"></param>
/// <returns></returns>
public static string GetValidateFileName(string folderPath, string fileName)
{
string result = string.Empty;
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] files = di.GetFiles(fileName);
if (files.Any())
{
result = files[0].FullName;
}
return result;
}
#region 获取时间戳
/// <summary>
/// 获取时间戳
/// </summary>
/// <returns></returns>
public static string GetTimeStamp()
{
TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
return Convert.ToInt64(ts.TotalMilliseconds).ToString();
}
#endregion
///獲取隨機數
public static int RandomInteger(int min, int max)
{
RNGCryptoServiceProvider Rand = new RNGCryptoServiceProvider();
uint scale = uint.MaxValue;
while (scale == uint.MaxValue)
{
// Get four random bytes.
byte[] four_bytes = new byte[4];
Rand.GetBytes(four_bytes);
// Convert that into an uint.
scale = BitConverter.ToUInt32(four_bytes, 0);
}
// Add min to the scaled difference between max and min.
return (int)(min + (max - min) *
(scale / (double)uint.MaxValue));
}
}
}
__EOF__

本文作者:程序员不帅哥
本文链接:https://www.cnblogs.com/Mr-Worlf/p/8709256.html
关于博主:一个精通抄代码的老猿
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Mr-Worlf/p/8709256.html
关于博主:一个精通抄代码的老猿
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
更多精彩内容,请关注我的V信公众号:程序员不帅哥
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构