当前位置: 首页 > news >正文

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等工具都是收费的&#xff0c;即使有破解版但是有的公司里不让用盗版的软件。可以使用MobaXterm来替代。 同理可使用JooKDB来代替收费的navicat 来连接数据库。 2.MobaXterm…...

Docker安装Nacos(详细教程)

Docker安装Nacos的步骤相对直接&#xff0c;但需要注意一些细节以确保安装成功。以下是一个详细的安装步骤指南&#xff1a; 1. 安装Docker 首先&#xff0c;确保你的系统中已经安装了Docker。如果尚未安装&#xff0c;你可以通过访问Docker的官方网站或使用包管理器&#xf…...

Pandas:提供了快速、灵活和表达式丰富的数据结构。

引言 Pandas是Python中最为广泛使用的数据分析和操作库之一&#xff0c;特别适用于处理结构化数据。该库的名称源自“Panel Data”的缩写&#xff0c;意为面板数据或多维数据。Pandas基于NumPy构建&#xff0c;继承了其高效的数组计算能力&#xff0c;并在此基础上进一步扩展&…...

强!小目标检测全新突破!检测速度快10倍,GPU使用减少73.4%

强&#xff01;小目标检测全新突破&#xff0c;提出Mamba-in-Mamba结构&#xff0c;通过内外两层Mamba模块&#xff0c;同时提取全局和局部特征&#xff0c;实现了检测速度快10倍&#xff0c;GPU使用减少73.4&#xff05;的显著效果&#xff01; 【小目标检测】是近年来在深度…...

重修设计模式-创建型-原型模式

重修设计模式-创建型-原型模式 原型模式就是利用已有对象&#xff08;原型&#xff09;通过拷贝方式来创建对象的模式&#xff0c;达到节省对象创建时间的目的。适用于对象创建成本较大&#xff0c;且同一类的不同对象之间差别不大的场景。 比如一个对象中的数据需要经过复杂…...

S71200 - 编程 - 笔记

1 DEMO 1.1气阀控制 1.2 红绿灯 基于PLC红绿灯控制_哔哩哔哩_bilibili 2 介绍变量DB&#xff0c;M&#xff0c;I&#xff0c;Q的使用 在PLC编程中&#xff0c;通常会使用多种类型的变量来实现逻辑控制、数据存储和输入输出操作。以下是常见的PLC变量类型及其用途&#xff…...

【项目】畅聊天地博客测试报告

项目简介&#xff1a;本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室&#xff0c;与其他在线用户实时交流。系统支持文字消息的快速发送和接收、消息实时推送&#xff0c;确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效…...

【Next】全局样式和局部样式

不同于 nuxt &#xff0c;next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件&#xff0c;存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …...

关于Docker的详细介绍

Docker是一个开源的应用容器引擎&#xff0c;它允许开发者将应用程序及其依赖项打包到一个可移植的容器中&#xff0c;然后发布到任何流行的Linux或Windows操作系统的机器上&#xff0c;实现虚拟化。以下是关于Docker的详细介绍&#xff1a; ### 一、Docker的定义 Docker是一…...

一台佳能G3811彩色喷墨打印机打印没颜色报5200的维修记录

一台佳能G3811彩色喷墨打印机,用户送修,称打印没有颜色,加电开机连电脑安驱动打印测试,确实没有颜色,于是清洗喷头结果打印机那个显示屏上 ,上来就报错P08,电脑提示5200; 话不多说,开始维修,仅记录当时的维修方法及步骤,其它未列出。。。 维修方法: 1、进维…...

【LeetCode】452.用最少数量的箭引发气球

能够找到问题的解法与把问题足够简化是天壤之别。比如我知道这题可以用贪心算法来解决&#xff0c;但是代码实现的过程中就走上了复杂的路&#xff0c;但是官方题解给的代码则相当简洁。这说明我思考的不够深入&#xff0c;导致化繁为简的能力不够强。 1. 题目 2. 分析 一道贪…...

网络安全流程规范文件解读(安全专业L1级)

技术能力项编号AQ-AQ-L1-02.01(安全维护作业计划执行能力) 课程目标&#xff1a; 通过学习课程&#xff0c;学员可以&#xff1a; 1.了解ZGYD网络安全流程规范 2.独立执行安全维护作业计划。 流程规范 一、《ZGYD远程接入安全管理办法》 二、《ZGYD网络运维账号口令管理办…...

Java、python、php版的邮件发送与过滤系统的设计与实现 (源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…...

st算法求RMP

st算法&#xff08;sparse_tabel&#xff09;可以在O(N log N)的预处理后实现O(1)的查询效率。 rmq&#xff1a;Range Maximum (Minimum) Query的缩写&#xff0c;顾名思义是用来求某个区间内的最大值或最小值&#xff0c;通常用在需要多次询问一些区间的最值得问题中。 #inc…...

零基础学习Redis(1) -- Redis简介

Redis是一个在内存中存储数据的一个中间组件&#xff0c;可用作数据库或数据缓存&#xff0c;通常在分布式系统中使用 &#xff08;不了解分布式&#xff1f; 点击传送&#xff09; 1. Redis特性 在内存中存储数据&#xff0c;通过键值对的方法存储key为string&#xff0c;v…...

安装MySQL数据库【后端 8】

安装MySQL数据库 MySQL是世界上最流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;之一&#xff0c;广泛应用于Web应用程序开发中。无论你是初学者还是有一定经验的开发者&#xff0c;掌握MySQL的安装都是必不可少的技能。本文将指导你如何在不同的操作系统上安装…...

JAVA学习-练习试用Java实现“整数转换英文表示”

问题&#xff1a; 将非负整数 num 转换为其对应的英文表示。示例 1&#xff1a; 输入&#xff1a;num 123 输出&#xff1a;"One Hundred Twenty Three" 示例 2&#xff1a; 输入&#xff1a;num 12345 输出&#xff1a;"Twelve Thousand Three Hundred Fo…...

TPshop商城的保姆教程(Ubuntu)

1.上传TPSHOP源码 选择适合自己的版本下载 TPshop商城源文件下载链接&#xff1a; 百度网盘 请输入提取码 上传tpshop的源码包到特定目录/var/www/html 切换到/var/www/html 目录下 cd /var/www/html修改HTML目录下所有文件权限 chmod -R 777 * 2.打开网址配置 TPshop安…...

MySQL存储过程、触发器、视图

数据库中的存储过程、触发器和视图是三种常用的数据库对象&#xff0c;它们在管理数据、优化性能和简化复杂操作中起着重要的作用。下面是每种对象的详细介绍和示例&#xff1a; 存储过程 存储过程是一组为了执行特定功能而预编译的SQL语句。它类似于编程中的函数&#xff0c…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...