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

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统&#xff0c;64位 下载路径 oracle 11g 安装包...