当前位置: 首页 > 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…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

拉力测试cuda pytorch 把 4070显卡拉满

import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试&#xff0c;通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小&#xff0c;增大可提高计算复杂度duration: 测试持续时间&#xff08;秒&…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后&#xff0c;迭代器会失效&#xff0c;因为顺序迭代器在内存中是连续存储的&#xff0c;元素删除后&#xff0c;后续元素会前移。 但一些场景中&#xff0c;我们又需要在执行删除操作…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

Kafka主题运维全指南:从基础配置到故障处理

#作者&#xff1a;张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1&#xff1a;主题删除失败。常见错误2&#xff1a;__consumer_offsets占用太多的磁盘。 主题日常管理 …...