using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web; namespace Xima.FreamWork.Common.Web
{ public class Utils
{ /// <summary>
/// 返回字符串真实长度, 1个汉字长度为2
/// </summary>
/// <returns>字符长度</returns>
public static int GetStringLength(string str)
{
return Encoding.Default.GetBytes(str).Length;
} /// <summary>
/// 检测是否有Sql危险字符
/// </summary>
/// <param name="str">要判断字符串</param>
/// <returns>判断结果</returns>
public static bool IsSafeSqlString(string str)
{
return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']");
} #region "字符转换" /// <summary>
/// 将object转换为string类型
/// </summary>
/// <param name="expression"></param>
/// <returns></returns>
public static string ToStr(object expression)
{
return TypeConverter.ObjToStr(expression);
} /// <summary>
/// object型转换为bool型
/// </summary>
/// <param name="strValue">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的bool类型结果</returns>
public static bool StrToBool(object expression, bool defValue)
{
return TypeConverter.StrToBool(expression, defValue);
} /// <summary>
/// string型转换为bool型
/// </summary>
/// <param name="strValue">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的bool类型结果</returns>
public static bool StrToBool(string expression, bool defValue)
{
return TypeConverter.StrToBool(expression, defValue);
} /// <summary>
/// 将对象转换为Int32类型
/// </summary>
/// <param name="expression">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的int类型结果</returns>
public static int StrToInt(object expression, int defValue)
{
return TypeConverter.ObjectToInt(expression, defValue);
} /// <summary>
/// 将字符串转换为Int32类型
/// </summary>
/// <param name="expression">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的int类型结果</returns>
public static int StrToInt(string expression, int defValue)
{
return TypeConverter.StrToInt(expression, defValue);
} /// <summary>
/// 将字符串转换为Byte类型
/// </summary>
/// <param name="expression">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的int类型结果</returns>
public static Byte StrToByte(object expression, byte defValue)
{
return TypeConverter.ObjectToByte(expression, defValue);
} /// <summary>
/// 将字符串转换为Byte类型
/// </summary>
/// <param name="expression">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的int类型结果</returns>
public static Byte StrToByte(string expression, byte defValue)
{
return TypeConverter.StrToByte(expression, defValue);
}
/// <summary>
/// 将字符串转换为Int32类型
/// </summary>
/// <param name="expression">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的int类型结果</returns>
public static Int64 StrToInt64(string expression, int defValue)
{
return TypeConverter.StrToInt64(expression, defValue);
} /// <summary>
/// Object型转换为float型
/// </summary>
/// <param name="strValue">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的int类型结果</returns>
public static float StrToFloat(object strValue, float defValue)
{
return TypeConverter.StrToFloat(strValue, defValue);
} /// <summary>
/// string型转换为float型
/// </summary>
/// <param name="strValue">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的float类型结果</returns>
public static float StrToFloat(string strValue, float defValue)
{
return TypeConverter.StrToFloat(strValue, defValue);
} /// <summary>
/// string类型转换为decimal
/// </summary>
/// <param name="strValue">要转换的字符串</param>
/// <param name="defValue">缺省值</param>
/// <returns>转换后的decimal类型结果</returns>
public static decimal strToDecimal(string strValue, decimal defValue)
{
return TypeConverter.StrToDecimal(strValue, defValue);
}
#endregion #region "IP地址"
/// <summary>
/// 是否为ip
/// </summary>
/// <param name="ip"></param>
/// <returns></returns>
public static bool IsIP(string ip)
{
return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$");
} public static bool IsIPSect(string ip)
{
return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){2}((2[0-4]\d|25[0-5]|[01]?\d\d?|\*)\.)(2[0-4]\d|25[0-5]|[01]?\d\d?|\*)$");
} #endregion #region grid文字超长截取
public static string GetUnicodeSubString(string str, int len, string p_TailString)
{
string result = string.Empty;// 最终返回的结果
int byteLen = System.Text.Encoding.Default.GetByteCount(str);// 单字节字符长度
int charLen = str.Length;// 把字符平等对待时的字符串长度
int byteCount = ;// 记录读取进度
int pos = ;// 记录截取位置
if (byteLen > len)
{
for (int i = ; i < charLen; i++)
{
if (Convert.ToInt32(str.ToCharArray()[i]) > )// 按中文字符计算加2
byteCount += ;
else// 按英文字符计算加1
byteCount += ;
if (byteCount > len)// 超出时只记下上一个有效位置
{
pos = i;
break;
}
else if (byteCount == len)// 记下当前位置
{
pos = i + ;
break;
}
} if (pos >= )
result = str.Substring(, pos) + p_TailString;
}
else
result = str; return result;
}
#endregion /// <summary>
/// 格式化价格信息
/// </summary>
/// <param name="Price"></param>
/// <returns></returns>
public static string FormatPrice(object Price)
{
return string.Format("{0:c}", decimal.Parse(Price.ToString()));
} /// <summary>
/// 返回根目录
/// </summary>
/// <returns></returns>
public static string GetRootPath()
{
return System.Web.HttpContext.Current.Server.MapPath("/");
} /// <summary>
/// 获得当前绝对路径
/// </summary>
/// <param name="strPath">指定的路径</param>
/// <returns>绝对路径</returns>
public static string GetMapPath(string strPath)
{
if (HttpContext.Current != null)
{
return HttpContext.Current.Server.MapPath(strPath);
}
else //非web程序引用
{
strPath = strPath.Replace("/", "\\");
if (strPath.StartsWith("\\"))
{
strPath = strPath.Substring(strPath.IndexOf('\\', )).TrimStart('\\');
}
return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
}
} #region "按当前日期和时间生成随机数"
/// <summary>
/// 按当前日期和时间生成随机数
/// </summary>
/// <param name="Num">附加随机数长度</param>
/// <returns></returns>
public static string sRndNum(int Num)
{
string sTmp_Str = System.DateTime.Today.Year.ToString() + System.DateTime.Today.Month.ToString("") + System.DateTime.Today.Day.ToString("") + System.DateTime.Now.Hour.ToString("") + System.DateTime.Now.Minute.ToString("") + System.DateTime.Now.Second.ToString("");
return sTmp_Str + RndNum(Num);
}
#endregion #region 生成0-9随机数
/// <summary>
/// 生成0-9随机数
/// </summary>
/// <param name="VcodeNum">生成长度</param>
/// <returns></returns>
public static string RndNum(int VcodeNum)
{
StringBuilder sb = new StringBuilder(VcodeNum);
Random rand = new Random((int)DateTime.Now.Ticks);
for (int i = ; i < VcodeNum + ; i++)
{
int t = rand.Next();
sb.AppendFormat("{0}", t);
}
return sb.ToString(); }
#endregion /// <summary>
/// 计算两个日期的时间间隔
/// </summary>
/// <param name="DateTime1">第一个日期和时间</param>
/// <param name="DateTime2">第二个日期和时间</param>
/// <returns></returns>
public static string DateDiff(DateTime DateTime1, DateTime DateTime2)
{ string dateDiff = string.Empty;
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
dateDiff = ts.Days.ToString() + "Day"
+ ts.Hours.ToString() + "Hours"
+ ts.Minutes.ToString() + "Minutes"
+ ts.Seconds.ToString() + "Seconds";
return dateDiff;
} /// <summary>
/// 计算两个日期的时间间隔
/// 第一个日期减去第二个日期
/// </summary>
/// <param name="DateTime1">第一个日期和时间</param>
/// <param name="DateTime2">第二个日期和时间</param>
/// <returns></returns>
public static int Date2Diff(DateTime DateTime1, DateTime DateTime2)
{
DateTime1 = Convert.ToDateTime(DateTime1.ToString("yyyy-MM-dd"));
DateTime2 = Convert.ToDateTime(DateTime2.ToString("yyyy-MM-dd"));
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2);
return ts.Days;
} /// <summary>
/// 计算日期到今天时间间隔,返回整形
/// </summary>
/// <param name="DateTime1">需要计算的日期</param>
/// <returns></returns>
public static int DateDiff(DateTime DateTime1)
{
int dateDiff = ;
TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime.Now.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
dateDiff = ts.Days;
return dateDiff;
} #region 全角半角转换
/// <summary>
/// 转全角的函数(SBC case)
/// </summary>
/// <param name="input">任意字符串</param>
/// <returns>全角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToSBC(string input)
{
//半角转全角:
char[] c = input.ToCharArray();
for (int i = ; i < c.Length; i++)
{
if (c[i] == )
{
c[i] = (char);
continue;
}
if (c[i] < )
c[i] = (char)(c[i] + );
}
return new string(c);
} /// <summary> 转半角的函数(DBC case) </summary>
/// <param name="input">任意字符串</param>
/// <returns>半角字符串</returns>
///<remarks>
///全角空格为12288,半角空格为32
///其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
///</remarks>
public static string ToDBC(string input)
{
char[] c = input.ToCharArray();
for (int i = ; i < c.Length; i++)
{
if (c[i] == )
{
c[i] = (char);
continue;
}
if (c[i] > && c[i] < )
c[i] = (char)(c[i] - );
}
return new string(c);
} /// <summary>
/// 把英文半角符号'"替换为英文全角符号'",防止干扰前台的js函数tooltip.show()而导致乱码
/// </summary>
/// <param name="strList">不安全的字符串</param>
/// <returns>安全的字符串</returns>
public static string protectJsTooltipShow(string strList)
{
string strSafe = strList;
strSafe = strSafe.Replace("&", "&amp;");
strSafe = strSafe.Replace("\"", "&quot;");
strSafe = strSafe.Replace("\n", "&lt;br&gt");
strSafe = strSafe.Replace(@"\", @"\\");
strSafe = strSafe.Replace("'", "\\'");
strSafe = strSafe.Replace("<", "&lt;");
strSafe = strSafe.Replace(">", "&gt;");
return strSafe;
}
#endregion public static string ChineseTONumber(string chStr)
{
const string numStr = "";
const string chineseStr = "零一二三四五六七八九";
char[] c = chStr.ToCharArray();
for (int i = ; i < c.Length; i++)
{
int index = chineseStr.IndexOf(c[i]);
if (index != -)
c[i] = numStr.ToCharArray()[index];
}
return new string(c);
} public static string NumberToChinese(string numberStr)
{
var numStr = "";
var chineseStr = "零一二三四五六七八九";
char[] c = numberStr.ToCharArray();
for (int i = ; i < c.Length; i++)
{
int index = numStr.IndexOf(c[i]);
if (index != -)
c[i] = chineseStr.ToCharArray()[index];
}
return new string(c);
}
}
}

Web--Utils的更多相关文章

  1. 用python写web一定要去破解的异步请求问题.经历web.py和tornado,完破!

    1.问题 上个学期,给学校写了一个数据服务,主要从oracle里面读取一些数据供查询使用,非常快速的用web.py搭建了起来.调试顺利,测试正常,上线!接下来就是挨骂了,我铁定知道会卡,但是没想到会那 ...

  2. web.py url传参及获取

    第一种:直接获取: import web urls = ( '/(.*)','index' #URL后面必须加(.*) ) class index: def GET(self,name): print ...

  3. Windows下安装Web.py快速指南

    环境介绍 首先介绍下安装使用的环境 - Windows 7 - Python 3.6 Web.py介绍 web.py是Python在Web领域一个轻量级的解决方案,所谓轻量,就是非常简单快速满足Web ...

  4. web.py 使用 db.select 返回的数据只能遍历一次

    2013-10-05 23:04:33|   1. web.py 使用 db.select 返回的数据只能遍历一次import webdb = web.database(dbn='mysql', db ...

  5. python3安装web.py

    今天准备测试代理池IPProxyPool获取到ip的质量,在安装web.py的时候遇到了些问题,在此记录一下. 1.安装资料 web.py官网:http://webpy.org/ web.py的git ...

  6. redis集成到Springmvc中及使用实例

    redis是现在主流的缓存工具了,因为使用简单.高效且对服务器要求较小,用于大数据量下的缓存 spring也提供了对redis的支持: org.springframework.data.redis.c ...

  7. mybatis plugins实现项目【全局】读写分离

    在之前的文章中讲述过数据库主从同步和通过注解来为部分方法切换数据源实现读写分离 注解实现读写分离: http://www.cnblogs.com/xiaochangwei/p/4961807.html ...

  8. shiro权限管理框架与springmvc整合

    shiro是apache下的一个项目,和spring security类似,用于用户权限的管理‘ 但从易用性和学习成本上考虑,shiro更具优势,同时shiro支持和很多接口集成 用户及权限管理是众多 ...

  9. 如何给FineReport设置自定义消息提醒工具

    FineReport设计器有自动的消息推送功能,可设置报表定时推送和常规的日报周报推送.官方有自己的消息推送的接口,不过有些用户旺旺希望自己开发,符合自己需求的推送界面. 下面这个方案就从逻辑层面简单 ...

  10. edit界面初始化加默认值

    功能名称:modelCreateAction 切入类型:after 事件名称:com.kingdee.bos.eventbus.event.model.ModelCreateEvent package ...

随机推荐

  1. 概率dp sgu495

    题意: 有n个奖品,m个人排队来选礼物,对于每个人,他打开的盒子,可能有礼物,也有可能已经被之前的人取走了,然后把盒子放回原处.为最后m个人取走礼物的期望. 思路1: 排队取,第1个人取到1个,dp[ ...

  2. java.lang.OutOfMemoryError: GC overhead limit exceeded异常处理

    今天写程序遇到个之前从没遇到的异常-----java.lang.OutOfMemoryError: GC overhead limit exceeded,下面附上解决方法 异常: 解决方法: 鼠标右击 ...

  3. vue音乐播放器

    利用vue写一个简单的音乐播放器,包括功能有歌曲搜索.歌曲播放.歌曲封面.歌曲评论.播放动画.mv播放六个功能. <template> <div class="wrap&q ...

  4. 传奇脚本中 SendMsg 编号说明

    0 1 2 3 4 5 60对全服人说1.发送普通红色广播信息. 2.发送普通红色广播信息,并显示NPC名称. 3.发送普通红色广播信息,并人物NPC名称. 4.在NPC头顶,显示普通说话信息. 5. ...

  5. Hadoop3.1.1源码Client详解 : 入队前数据写入

    该系列总览: Hadoop3.1.1架构体系——设计原理阐述与Client源码图文详解 : 总览 紧接着上一篇: Hadoop3.1.1源码Client详解 : 写入准备-RPC调用与流的建立 先给出 ...

  6. js加密(七)steam登录

    1. url: https://store.steampowered.com/login/?redir=&redir_ssl=1 2. target: 登录 3. 分析 3.1 老样子,抓包, ...

  7. Scrapy 命令

    Scrapy提供了两种类型的命令.一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令).全局命令在项目中运行时的表现可能会与在非项目中运 ...

  8. hadoop学习笔记(二):hdfs优点和缺点

    优点 其中的10k+,指的是每一个块必须>=1M 缺点 低延迟:是指hadoop处理数据都是以分钟为单位的,而不像storm那样的是以毫秒级为单位的. 高吞吐率:是指你分布式存储的文件块的大小必 ...

  9. js 判断素数(质数)

    判断一个数是不是素数 function isPrinme(n) { if(n == 0 || n==1){ return false; } if(n==2){ return true; } for(v ...

  10. 「CF815C」Karen and Supermarket

    传送门 Luogu 解题思路 树形背包. 设 \(f[i][j][0/1]\) 表示在以 \(i\) 为根的子树中选 \(j\) 件商品的最少花费. 边界条件: \(f[i][j][0] = \min ...