扩展函数之 IsWhat 简单好用
代码实现:
/***扩展函数名细***/ //【IsInRange】
int num = ;
//以前写法
if (num > & num < ) { }
//现在写法
if (num.IsInRange(, )) { } //datetime类型也支持 //【IsNullOrEmpty】
object s = "";
//以前写法
if (s == null || string.IsNullOrEmpty(s.ToString())) { }
//现在写法
if (s.IsNullOrEmpty()) { }
//更顺手了没有 } //【IsIn】
string value = "a";
//以前写法我在很多项目中看到
if (value == "a" || value == "b" || value == "c") {
}
//现在写法
if (value.IsIn("a", "b", "c")) { } //【IsValuable与IsNullOrEmpty相反】
string ss = "";
//以前写法
if (!string.IsNullOrEmpty(ss)) { }
//现在写法
if (s.IsValuable()) { } List<string> list = null;
//以前写法
if (list != null && list.Count > ) { }
//现在写法
if (list.IsValuable()) { } //IsIDcard
if ("32061119810104311x".IsIDcard())
{ } //IsTelephone
if ("0513-85669884".IsTelephone())
{ } //IsMatch 节约你引用Regex的命名空间了
if ("我中国人12".IsMatch(@"人\d{2}")) { } //下面还有很多太简单了的就不介绍了
//IsZero
//IsInt
//IsNoInt
//IsMoney
//IsEamil
//IsMobile
封装类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions; namespace SyntacticSugar
{
/// <summary>
/// ** 描述:逻辑判段是什么?
/// ** 创始时间:2015-5-29
/// ** 修改时间:-
/// ** 作者:sunkaixuan
/// ** 使用说明:http://www.cnblogs.com/sunkaixuan/p/4539654.html
/// </summary>
public static class IsWhat
{
/// <summary>
/// 值在的范围?
/// </summary>
/// <param name="o"></param>
/// <param name="begin">大于等于begin</param>
/// <param name="end">小于等于end</param>
/// <returns></returns>
public static bool IsInRange(this int o, int begin, int end)
{
return o >= begin && o <= end;
}
/// <summary>
/// 值在的范围?
/// </summary>
/// <param name="o"></param>
/// <param name="begin">大于等于begin</param>
/// <param name="end">小于等于end</param>
/// <returns></returns>
public static bool IsInRange(this DateTime o, DateTime begin, DateTime end)
{
return o >= begin && o <= end;
} /// <summary>
/// 在里面吗?
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="o"></param>
/// <param name="values"></param>
/// <returns></returns>
public static bool IsIn<T>(this T o, params T[] values)
{
return values.Contains(o);
} /// <summary>
/// 是null或""?
/// </summary>
/// <returns></returns>
public static bool IsNullOrEmpty(this object o)
{
if (o == null || o == DBNull.Value) return true;
return o.ToString() == "";
}
/// <summary>
/// 是null或""?
/// </summary>
/// <returns></returns>
public static bool IsNullOrEmpty(this Guid? o)
{
if (o == null) return true;
return o == Guid.Empty;
}
/// <summary>
/// 是null或""?
/// </summary>
/// <returns></returns>
public static bool IsNullOrEmpty(this Guid o)
{
if (o == null) return true;
return o == Guid.Empty;
} /// <summary>
/// 有值?(与IsNullOrEmpty相反)
/// </summary>
/// <returns></returns>
public static bool IsValuable(this object o)
{
if (o == null) return false;
return o.ToString() != "";
}
/// <summary>
/// 有值?(与IsNullOrEmpty相反)
/// </summary>
/// <returns></returns>
public static bool IsValuable(this IEnumerable<object> o)
{
if (o == null || o.Count() == ) return false;
return true;
} /// <summary>
/// 是零?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsZero(this object o)
{
return (o == null || o.ToString() == "");
} /// <summary>
/// 是INT?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsInt(this object o)
{
if (o == null) return false;
return Regex.IsMatch(o.ToString(), @"^\d+$");
}
/// <summary>
/// 不是INT?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsNoInt(this object o)
{
if (o == null) return true;
return !Regex.IsMatch(o.ToString(), @"^\d+$");
} /// <summary>
/// 是金钱?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsMoney(this object o)
{
if (o == null) return false;
double outValue = ;
return double.TryParse(o.ToString(), out outValue);
} /// <summary>
/// 是邮箱?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsEamil(this object o)
{
if (o == null) return false;
return Regex.IsMatch(o.ToString(), @"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$");
} /// <summary>
/// 是手机?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsMobile(this object o)
{
if (o == null) return false;
return Regex.IsMatch(o.ToString(), @"^\d{11}$");
} /// <summary>
/// 是座机?
/// </summary>
public static bool IsTelephone(this object o)
{
if (o == null) return false;
return System.Text.RegularExpressions.Regex.IsMatch(o.ToString(), @"^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}$"); } /// <summary>
/// 是身份证?
/// </summary>
/// <param name="o"></param>
/// <returns></returns>
public static bool IsIDcard(this object o)
{
if (o == null) return false;
return System.Text.RegularExpressions.Regex.IsMatch(o.ToString(), @"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$");
} /// <summary>
///是适合正则匹配?
/// </summary>
/// <param name="o"></param>
/// <param name="begin">大于等于begin</param>
/// <param name="end">小于等于end</param>
/// <returns></returns>
public static bool IsMatch(this object o, string pattern)
{
if (o == null) return false;
Regex reg = new Regex(pattern);
return reg.IsMatch(o.ToString());
}
}
}
扩展函数之 IsWhat 简单好用的更多相关文章
- C#ASP.NET 通用扩展函数之 IsWhat 简单好用
好东西都需要人去整理.分类 注意:需要引用命名空间 SyntacticSugar 用法: /***扩展函数名细***/ //[IsInRange] int num = 100; //以前写法 if ( ...
- C#ASP.NET 通用扩展函数之 LogicSugar 简单好用
说明一下性能方面 还可以接受 循环1000次普通Switch是用了0.001秒 ,扩展函数为0.002秒 , 如果是大项目在有负载均衡的情况下完全可以无视掉,小项目也不会计较这点性能了. 注意需要引 ...
- 用Kotlin开发Android应用(III):扩展函数和默认值
这是关于Kotlin的第三篇. 原文标题:Kotlin for Android (III): Extension functions and default values 原文链接:http://an ...
- PHP进程通信基础——shmop 、sem系列函数使用
PHP进程通信基础--shmop .sem系列函数使用 进程通信的原理就是在系统中开辟出一个共享区域,不管是管道也好,还是共享内存,都是这个原理.如果心中有了这个概念,就会很方便去理解代码.由于官网上 ...
- Fel初认识
Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+.-等都是Fel函数),所有这 ...
- Fel表达式计算引擎学习
转载原文地址:Fel是轻量级的高效的表达式计算引擎 Fel的问题 Fel的问题 Fel是轻量级的高效的表达式计算引擎 Fel在源自于企业项目,设计目标是为了满足不断变化的功能需求和性能需求. Fel是 ...
- 林大妈的JavaScript基础知识(三):JavaScript编程(3)原型
在一般的编程语言中,我们使用继承来复用代码,做成良好的数据结构.而在JavaScript中,我们使用原型来实现以上的需求.由于JavaScript专注于对象而摒弃了类,我们要明白原型和继承的确是有差异 ...
- FEL表达式的用法
Fel是开放的,引擎执行中的多个模块都可以扩展或替换.Fel的执行主要是通过函数实现,运算符(+.-等都是Fel函数),所有这些函数都是可以替换的,扩展函数也非常简单. Fel有双引擎,同时支持解释执 ...
- 简单的jQuery扩展函数-让函数缓冲执行
$.fn.retarder = function(delay, method) { var node = this; if (node.length) { if (node[0]._timer_) c ...
随机推荐
- JavaScript异步加载方案
(1) defer,只支持IE defer属性的定义和用法(我摘自w3school网站) defer 属性规定是否对脚本执行进行延迟,直到页面加载为止. 有的 javascript 脚本 docume ...
- python--1、入门
python的创始人为吉多·范罗苏姆(Guido van Rossum). python在2017年统计的所有语言排名中处于第四名,稳步上升状态. python应用领域: WEB开发(Django框架 ...
- 努比亚(nubia) M2青春版 NX573J 解锁BootLoader 并进入临时recovery ROOT
努比亚(nubia) M2青春版 NX573J 解锁BootLoader 并进入临时recovery ROOT 工具下载链接:https://pan.baidu.com/s/1NfRTdXtdAZRi ...
- Maya API编程快速入门
一.Maya API编程简介 Autodesk® Maya® is an open product. This means that anyone outside of Autodesk can ch ...
- 【sqli-labs】 less28 GET- Error based -All you Union&Select Belong to us -String -Single quote with parenthesis(GET型基于错误的去除了Union和Select的单引号带括号字符串型注入)
这个不是基于错误的吧,看源码可以知道错误并没有输出 那就使用;%00和order by试一下 http://192.168.136.128/sqli-labs-master/Less-28/?id=1 ...
- jquery-pjax使用说明
pjax = pushState + ajax .--. / \ ## a a ( '._) |'-- | _.\___/_ ___pjax___ ."\> \Y/|<'. '. ...
- 点击button 触发另一个button 事件
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs&quo ...
- Android内存优化————加载长图
项目中总会遇到加载长图的需求,图片的长度可能是手机长度的很多倍,也就是需要通过滑动来查看图片.比较简单的实现方式就是使用ScrollView来加载长图,但是这样做有一个很严重的问题,就是内存消耗严重. ...
- BZOJ [Poi2000]病毒 AC自动机_DFS_细节
Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...
- GDB调试工具、动态加载、内存管理(day04)
一.程序中的错误处理 在系统中定义了一个全局变量errno.在这个全局变量中存放着系统调用或者库函数出错的信息(错误编号).然后根据错误编号获取错误信息. 举例说明: 打开一个文件,如果这个文件不存在 ...