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语句。它类似于编程中的函数,…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
