C# 字符串扩展方法
功能
1.判断一个字符串是否为null或者空字符串
2.判断一个字符串是否为null或者空白字符
3.判断一个字符串是否为数字
4.判断一个字符串是否为邮件
5.判断一个字符串是否为字母加数字
6.判断一个字符串是否为手机号码
7.判断一个字符串是否为电话号码
8.判断一个字符串是否为网址
9.判断一个字符串是否为IP地址
10.判断是否为字母
转换
11.string 转 int
12.string 转 ushort
13.string 转 float
string 转 double
截取
14.获取指定长度字符串的值
15.清除SQL注入的危险字符
16.根据path递规创建文件夹
优点
1.一定编写随处可用。
2.调用代码简单,代码量少。
3.成熟代码无BUG
我是封装到DLL文件中,在具体的项目中引用。
引用命令空间
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Security;
代码
/// <summary>
/// 字符串扩展方法
/// </summary>
public static class StringExtension
{#region 常量定义//数字private const string REGEX_NUMERIC = @"^[-]?\d+[.]?\d*$";//邮件private const string REGEX_EMAIL = @"^\w+([-+.]\w+)*@(\w+([-.]\w+)*\.)+([a-zA-Z]+)+$";//中文字符private const string REGEX_CHINESE_CHARACTER = @"^[\u4e00-\u9fa5]{0,}$";#endregion#region 判断/// <summary>/// 判断一个字符串是否为null或者空字符串/// </summary>/// <param name="str">要判断的字符串</param>/// <returns>true: 空或者空字符串,false:不为空或者空字符串</returns>public static bool IsNullOrEmpty(this string str){return string.IsNullOrEmpty(str);}/// <summary>/// 判断一个字符串是否为null或者空白字符/// </summary>/// <param name="str">要判断的字符串</param>/// <returns>true: 空或者空字符串,false:不为空或者空白字符</returns>public static bool IsNullOrWhiteSpace(this string str){return string.IsNullOrWhiteSpace(str);}/// <summary>/// 判断一个字符串是否为数字/// </summary>/// <param name="str">待检测字符串</param>/// <returns>true: 输入字符串是合法数字,false: 输入字符串不是合法数字,空字符串返回false</returns>public static bool IsNumeric(this string str){if (str == null) return false;if (string.IsNullOrEmpty(str)){return false;}str = str.Replace(",", String.Empty);Regex regNum = new Regex(REGEX_NUMERIC);return regNum.IsMatch(str);}/// <summary>/// 判断一个字符串是否为邮件/// </summary>/// <param name="str">待检测字符串</param>/// <returns>true: 输入字符串是合法邮件地址,false:输入字符串不是合法邮件地址,空字符串返回false</returns>public static bool IsEmail(this string str){if (str == null) return false;Regex regex = new Regex(REGEX_EMAIL, RegexOptions.IgnoreCase);return regex.Match(str).Success;}/// <summary>/// 判断一个字符串是否为字母加数字/// Regex("[a-zA-Z0-9]?"/// </summary>/// <param name="str"></param>/// <returns></returns>public static bool IsWordAndNum(this string str){Regex regex = new Regex("[a-zA-Z0-9]?");return regex.Match(str).Success;}/// <summary>/// 判断一个字符串是否为手机号码/// </summary>/// <param name="str">待检测字符串</param>/// <returns>true: 输入字符串是合法的手机号码,false: 输入字符串不是合法的手机号码,空字符串返回false</returns>public static bool IsMobileNum(this string str){if (str == null) return false;Regex regex = new Regex(@"^(13[0-9]|15[0-9]|18[0-9]|147|17[0-9])\d{8}$", RegexOptions.IgnoreCase);return regex.Match(str).Success;}/// <summary>/// 判断一个字符串是否为电话号码/// </summary>/// <param name="str">待检测字符串</param>/// <returns>true: 输入字符串是合法的电话号码,false: 输入字符串不是合法的电话号码,空字符串返回false</returns>public static bool IsPhoneNum(this string str){if (str == null) return false;Regex regex = new Regex(@"^(86)?(-)?(0\d{2,3})?(-)?(\d{7,8})(-)?(\d{3,5})?$", RegexOptions.IgnoreCase);return regex.Match(str).Success;}/// <summary>/// 判断一个字符串是否为网址/// </summary>/// <param name="str">待检测字符串</param>/// <returns>true: 输入字符串是合法的网址,false: 输入字符串不是合法的网址,空字符串返回false</returns>public static bool IsUrl(this string str){if (str == null) return false;Regex regex = new Regex(@"(http://)?([\w-]+\.)*[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.IgnoreCase);return regex.Match(str).Success;}/// <summary>/// 判断一个字符串是否为IP地址/// </summary>/// <param name="str">待检测字符串</param>/// <returns>true: 输入字符串是合法的IP地址,false: 输入字符串不是合法的IP地址,空字符串返回false</returns>public static bool IsIp(this string str){if (str == null) return false;Regex regex = new Regex(@"^(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1})).(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1})).(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1})).(((2[0-4]{1}[0-9]{1})|(25[0-5]{1}))|(1[0-9]{2})|([1-9]{1}[0-9]{1})|([0-9]{1}))$", RegexOptions.IgnoreCase);return regex.Match(str).Success;}/// <summary>/// 判断是否为字母/// </summary>/// <param name="str">要校验的字符串</param>/// <returns></returns>public static bool IsLetters(this string str){if (str == null) return false;return Regex.IsMatch(str, @"^[a-zA-Z]");}/// <summary>/// 判断密码是否符合规则/// </summary>/// <param name="str"></param>/// <returns></returns>public static bool IsPassword(this string str, string pattern = "^[a-zA-Z0-9_]{6,18}$"){if (str == null) return false;return Regex.IsMatch(str, @"" + pattern + "");}#endregion#region 转换/// <summary>/// string 转 int/// </summary>/// <param name="value"></param>/// <returns>转换失败返回int最小值,否则返回对应的值</returns>public static int ToInt(this string value){int val = int.MinValue;int.TryParse(value, out val);return val;}/// <summary>/// string 转 int/// </summary>/// <param name="value"></param>/// <param name="defaultVal">转换失败的默认值</param>/// <returns>转换失败返回int最小值,否则返回对应的值</returns>public static int ToInt(this string value,int defaultVal = int.MinValue){int val = defaultVal;int.TryParse(value, out val);return val;}/// <summary>/// string 转 ushort/// </summary>/// <param name="value"></param>/// <returns></returns>public static ushort ToUshort(this string value){return ushort.Parse(value.ToString());}/// <summary>/// string 转 float/// </summary>/// <param name="value"></param>/// <returns></returns>public static float ToFloat(this string value){return float.Parse(value);}/// <summary>/// string 转 double/// </summary>/// <param name="value"></param>/// <returns></returns>public static double ToDouble(this string value){double val = double.MinValue;double.TryParse(value,out val);return val;}#endregion#region 截取/// <summary>/// 获取指定长度字符串的值/// </summary>/// <param name="str"></param>/// <param name="length">指定长度</param>/// <returns></returns>public static string GetAssignLenVal(this string str, int length = 10){string returnVal = string.Empty;if (!string.IsNullOrEmpty(str)){returnVal = str.Length > length ? string.Format("{0}...", str.Substring(0, length)) : str;}return returnVal;}/// <summary>/// 截取字符串/// 如果转入的是null或''都返返回,string.Empty/// </summary>/// <param name="sourceStr">源字符串</param>/// <param name="length">最大长度</param>/// <returns>新字符串</returns>public static string SubstringExtend(this string sourceStr, int length){string resultStr = string.Empty;if (!string.IsNullOrEmpty(sourceStr)){resultStr = sourceStr;if (sourceStr.Length >= length){resultStr = sourceStr.Substring(0, length - 1);}}return resultStr;}#endregion/// <summary>/// 清除SQL注入的危险字符/// </summary>/// <param name="str"></param>/// <returns></returns>public static string ClearDangerStr(this string str){return str.ToLower().Replace("'", string.Empty).Replace(";", string.Empty).Replace("-", string.Empty).Replace("$", string.Empty).Replace(@"\", string.Empty).Replace(@"/", string.Empty).Replace("delete", string.Empty).Replace("update", string.Empty).Replace("drop", string.Empty).Replace("insert", string.Empty).Replace("select", string.Empty).Replace("alter", string.Empty).Replace("create", string.Empty);}/// <summary>/// 根据path递规创建文件夹/// </summary>/// <param name="filePath"></param>/// <returns></returns>public static bool CreateDirectoryByPath(this string filePath){var isOk = false;var filePathDirectory = filePath.Substring(0, filePath.LastIndexOf(@"\"));filePathDirectory = filePathDirectory.Replace("//", @"\").Replace("/", @"\");var directory = filePathDirectory.Split('\\').ToList();var existsDir = string.Empty;foreach (var item in directory){existsDir += item + @"\";if (!Directory.Exists(existsDir)){Directory.CreateDirectory(existsDir);}}isOk = true;return isOk;}
}
相关文章:
C# 字符串扩展方法
功能 1.判断一个字符串是否为null或者空字符串 2.判断一个字符串是否为null或者空白字符 3.判断一个字符串是否为数字 4.判断一个字符串是否为邮件 5.判断一个字符串是否为字母加数字 6.判断一个字符串是否为手机号码 7.判断一个字符串是否为电话号码 8.判断一个字符串是否为网…...
JookDB和MobaXterm下载安装使用
文章目录 1.使用背景2.MobaXterm的下载安装使用3.JooKDB的下载安装使用 1.使用背景 由于xshell和xftp等工具都是收费的,即使有破解版但是有的公司里不让用盗版的软件。可以使用MobaXterm来替代。 同理可使用JooKDB来代替收费的navicat 来连接数据库。 2.MobaXterm…...
Docker安装Nacos(详细教程)
Docker安装Nacos的步骤相对直接,但需要注意一些细节以确保安装成功。以下是一个详细的安装步骤指南: 1. 安装Docker 首先,确保你的系统中已经安装了Docker。如果尚未安装,你可以通过访问Docker的官方网站或使用包管理器…...
Pandas:提供了快速、灵活和表达式丰富的数据结构。
引言 Pandas是Python中最为广泛使用的数据分析和操作库之一,特别适用于处理结构化数据。该库的名称源自“Panel Data”的缩写,意为面板数据或多维数据。Pandas基于NumPy构建,继承了其高效的数组计算能力,并在此基础上进一步扩展&…...
强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%
强!小目标检测全新突破,提出Mamba-in-Mamba结构,通过内外两层Mamba模块,同时提取全局和局部特征,实现了检测速度快10倍,GPU使用减少73.4%的显著效果! 【小目标检测】是近年来在深度…...
重修设计模式-创建型-原型模式
重修设计模式-创建型-原型模式 原型模式就是利用已有对象(原型)通过拷贝方式来创建对象的模式,达到节省对象创建时间的目的。适用于对象创建成本较大,且同一类的不同对象之间差别不大的场景。 比如一个对象中的数据需要经过复杂…...
S71200 - 编程 - 笔记
1 DEMO 1.1气阀控制 1.2 红绿灯 基于PLC红绿灯控制_哔哩哔哩_bilibili 2 介绍变量DB,M,I,Q的使用 在PLC编程中,通常会使用多种类型的变量来实现逻辑控制、数据存储和输入输出操作。以下是常见的PLC变量类型及其用途ÿ…...
【项目】畅聊天地博客测试报告
项目简介:本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室,与其他在线用户实时交流。系统支持文字消息的快速发送和接收、消息实时推送,确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效…...
【Next】全局样式和局部样式
不同于 nuxt ,next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件,存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …...
关于Docker的详细介绍
Docker是一个开源的应用容器引擎,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,实现虚拟化。以下是关于Docker的详细介绍: ### 一、Docker的定义 Docker是一…...
一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录
一台佳能G3811彩色喷墨打印机,用户送修,称打印没有颜色,加电开机连电脑安驱动打印测试,确实没有颜色,于是清洗喷头结果打印机那个显示屏上 ,上来就报错P08,电脑提示5200; 话不多说,开始维修,仅记录当时的维修方法及步骤,其它未列出。。。 维修方法: 1、进维…...
【LeetCode】452.用最少数量的箭引发气球
能够找到问题的解法与把问题足够简化是天壤之别。比如我知道这题可以用贪心算法来解决,但是代码实现的过程中就走上了复杂的路,但是官方题解给的代码则相当简洁。这说明我思考的不够深入,导致化繁为简的能力不够强。 1. 题目 2. 分析 一道贪…...
网络安全流程规范文件解读(安全专业L1级)
技术能力项编号AQ-AQ-L1-02.01(安全维护作业计划执行能力) 课程目标: 通过学习课程,学员可以: 1.了解ZGYD网络安全流程规范 2.独立执行安全维护作业计划。 流程规范 一、《ZGYD远程接入安全管理办法》 二、《ZGYD网络运维账号口令管理办…...
Java、python、php版的邮件发送与过滤系统的设计与实现 (源码、调试、LW、开题、PPT)
💕💕作者:计算机源码社 💕💕个人简介:本人 八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流&…...
st算法求RMP
st算法(sparse_tabel)可以在O(N log N)的预处理后实现O(1)的查询效率。 rmq:Range Maximum (Minimum) Query的缩写,顾名思义是用来求某个区间内的最大值或最小值,通常用在需要多次询问一些区间的最值得问题中。 #inc…...
零基础学习Redis(1) -- Redis简介
Redis是一个在内存中存储数据的一个中间组件,可用作数据库或数据缓存,通常在分布式系统中使用 (不了解分布式? 点击传送) 1. Redis特性 在内存中存储数据,通过键值对的方法存储key为string,v…...
安装MySQL数据库【后端 8】
安装MySQL数据库 MySQL是世界上最流行的开源关系型数据库管理系统(RDBMS)之一,广泛应用于Web应用程序开发中。无论你是初学者还是有一定经验的开发者,掌握MySQL的安装都是必不可少的技能。本文将指导你如何在不同的操作系统上安装…...
JAVA学习-练习试用Java实现“整数转换英文表示”
问题: 将非负整数 num 转换为其对应的英文表示。示例 1: 输入:num 123 输出:"One Hundred Twenty Three" 示例 2: 输入:num 12345 输出:"Twelve Thousand Three Hundred Fo…...
TPshop商城的保姆教程(Ubuntu)
1.上传TPSHOP源码 选择适合自己的版本下载 TPshop商城源文件下载链接: 百度网盘 请输入提取码 上传tpshop的源码包到特定目录/var/www/html 切换到/var/www/html 目录下 cd /var/www/html修改HTML目录下所有文件权限 chmod -R 777 * 2.打开网址配置 TPshop安…...
MySQL存储过程、触发器、视图
数据库中的存储过程、触发器和视图是三种常用的数据库对象,它们在管理数据、优化性能和简化复杂操作中起着重要的作用。下面是每种对象的详细介绍和示例: 存储过程 存储过程是一组为了执行特定功能而预编译的SQL语句。它类似于编程中的函数,…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
