public class Utils
{
public static int GetStringLength(string str)
{//计算字符串字节长度
return Encoding.Default.GetBytes(str).Length;
}
/*
public static string Trim(string str)
{
if (str.Substring(0, 1) == " ")
{
for (int i = 0; i < str.Length; i++)
{
if (str.Substring(i, 1) == " ")
{
str = str.Remove(i, 1);
}
else
{
break;
}
}
}
if (str.Substring((str.Length - 1), 1) == " ")
{
for (int i = (str.Length - 1); i >= 0; i--)
{
if (str.Substring(i, 1) == " ")
{
str = str.Remove(i, 1);
}
else
{
break;
}
}
}
return str;
}*/
public static string Trim(string str) //去除前后空格
{
return new Regex("^ \\s*|\\s*$").Replace(str, "");
}
public static string Cut_str(string str, int len)
{//截取指定长度字符
int _a = 0;
int _b = 0;
string _s = "";
for (int _i = 0; _i < str.Length; _i++)
{
_b += 1;
if (new Regex("^[\\u4E00-\\u9FAF]+$").IsMatch(str.Substring(_i, 1)))
{
_a += 2;
}
else
{
_a++;
}
if (_a == len)
{
_s = str.Substring(0, _b);
break;
}
else if (_a > len)
{
_s = str.Substring(0, (_b - 1)) + ".";
break;
}
}
return _s;
}
public static string Ubb(string str)
{//ubb转换代码,.*虽然能匹配所有但是还要加上 ?贪婪模式 否则会出现点小问题
str = Regex.Replace(str, "\\[b\\](.*?)\\[\\/b\\]", "<b>$1</b>");
str = Regex.Replace(str, "\\[u\\](.*?)\\[\\/u\\]", "<u>$1</u>");
str = Regex.Replace(str, "\\[i\\](.*?)\\[\\/i\\]", "<i>$1</i>");
str = Regex.Replace(str, "\\[b\\](.*?)\\[\\/b\\]", "<b>$1</b>");
str = Regex.Replace(str, "\\[img\\](.*?)\\[\\/img\\]", "<img src=\"$1\"></img>");
str = Regex.Replace(str, "\\[url=(.*?)\\](.*?)\\[\\/url\\]", "<a href=\"$1\">$2</a>");
str = Regex.Replace(str, "\\[align=(.*?)\\](.*?)\\[\\/align\\]", "<div align=\"$1\">$2</div>");
str = Regex.Replace(str, "\\[face\\](.*?)\\[\\/face\\]", "<img src=\"images/$1.gif\"></img>");
return str;
}
public static int GetInArrayID(string str, string[] str_2, bool outb)
{//在字符串数组中查找是否存在某字符串
int _num = str_2.Length;
if (outb)
{//true区分大小写
for (int _i = 0; _i < _num; _i++)
{
if (str == str_2[_i])
{//这样比较区分大小写
return _i;
}
}
}
else
{
for (int _i = 0; _i < _num; _i++)
{
if (str.ToLower() == str_2[_i].ToLower())
{
return _i;
}
}
}
return -1; //不存在返回-1
}
public static string MD5(string str)
{//md5加密函数
byte[] b = Encoding.Default.GetBytes(str);
b = new MD5CryptoServiceProvider().ComputeHash(b);
string ret = "";
for (int i = 0; i < b.Length; i++)
ret += b[i].ToString("x").PadLeft(2, '0');
return ret;
}
public static void ServerAlert(string str,string url )
{
HttpContext.Current.Response.Write("<script language=\"javascript\">alert(\""+str+"\");");
HttpContext.Current.Response.Write("window.location.href=\""+url+"\";");
HttpContext.Current.Response.Write("</script>");
HttpContext.Current.Response.End();
//公用类中不能直接用Response.因为这时候不是页面,也就没有Response对象
//而因该使用HTtpcontext类来显示
}
//------------读写Cookie值---------------
public static void WriteCookie(string strName, string strValue)
{//写Cookie值
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
cookie = new HttpCookie(strName);
}
cookie.Value = strValue;
HttpContext.Current.Response.AppendCookie(cookie);
}
public static void WriteCookie(string strName, string strValue, int expires)
{//写cookie值+1重载函数 加时间
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
cookie = new HttpCookie(strName);
}
cookie.Value = strValue;
cookie.Expires = DateTime.Now.AddMinutes(expires);
HttpContext.Current.Response.AppendCookie(cookie);
}
public static void WriteCookie(string strName, string strKeyName,String strKeyValue)
{//写cookie值+1重载函数 加子键/值
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
cookie = new HttpCookie(strName);
}
cookie.Values[strKeyName] = strKeyValue;
HttpContext.Current.Response.AppendCookie(cookie);
}
public static void WriteCookie(string strName, string strKeyName, String strKeyValue, int expires)
{//写cookie值+2重载函数 加子键/值 过期时间分钟计算
HttpCookie cookie = HttpContext.Current.Request.Cookies[strName];
if (cookie == null)
{
cookie = new HttpCookie(strName);
}
cookie.Values[strKeyName] = strKeyValue;
cookie.Expires = DateTime.Now.AddMinutes(expires);
//这里过期时间能影响到所有该集合下所有子键的过期时间
HttpContext.Current.Response.AppendCookie(cookie);
}
public static string GetCookie(string strName)
{//读cookie值
if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null)
{
return HttpContext.Current.Request.Cookies[strName].Value.ToString();
}
return "";
}
public static string GetCookie(string strName,string strKeyName)
{//读cookie值+1重载,读取Cookie子键值
if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null&& HttpContext.Current.Request.Cookies[strName].Values[strKeyName] != null)
{
return HttpContext.Current.Request.Cookies[strName].Values[strKeyName].ToString();
}
return "";
}
public static void setFile(string str)
{
//把一个值写如文件,调试用
string strFile = @"E:\CandC++\c#\session事件\01.txt";//这是路径
FileStream fs = new FileStream(strFile, FileMode.Append, FileAccess.Write);
//这里Append是追加模式,但是只能写模式下用这个模式
StreamWriter sw = new StreamWriter(fs);//创建一个写字符串的流
sw.WriteLine(str);
sw.Close();//关闭流写入磁盘文件
}
//------------字段验证函数----------------
public static bool validateName(string str)
{
return new Regex("^[\\u4E00-\\u9FAF\\w+]+$").IsMatch(str);
}
public static bool validateLoginName(string str)
{
return new Regex("^[\\w_]+$").IsMatch(str);
}
public static bool validateEmail(string str)
{
return new Regex("^[\\w_\\-\\.]+?@\\w+?\\-?\\w*?\\-?\\w*?(\\.\\w+)+?$").IsMatch(str);
}
public static bool validateTel(string str)
{
return new Regex("(^(\\d{4}\\-)?\\d{7,8}$)|(^1\\d{10}$)").IsMatch(str);
}
public static bool IsNumber(string str)
{//判断是否数字
return new Regex("^[0-9]+?$").IsMatch(str);
}
//----------------Request操作类-------------------
public static bool IsPost()
{//判断是否是POST传输
return HttpContext.Current.Request.HttpMethod.Equals("POST");
}
public static bool IsGet()
{
return HttpContext.Current.Request.HttpMethod.Equals("GET");
}
public static string GetFormString(string str)
{//因为取不到值Form或Querystring为null赋给其他数据类型出错所以这里更改下
if (HttpContext.Current.Request.Form[str] == null)
{
return "";
}
else
{
return HttpContext.Current.Request.Form[str].ToString();
}
}
public static string GetQueryString(string str)
{//获得查询字符串
if (HttpContext.Current.Request.QueryString[str] == null)
{
return "";
}
else
{
return HttpContext.Current.Request.QueryString[str].ToString();
}
}
public static string GetServerString(string str)
{//获得服务器变量值
if (HttpContext.Current.Request.ServerVariables[str] == null)
{
return "";
}
else
{
return HttpContext.Current.Request.ServerVariables[str].ToString();
}
}
public static int GetInt(string strName, int defValue)
{//根据不同类型返回整数
string str = "";
switch (defValue)
{
case 1:
if (Utils.GetFormString(strName) != "")
{
str=Utils.GetFormString(strName);
}
break;
case 2:
if (Utils.GetQueryString(strName) != "")
{
str = Utils.GetQueryString(strName);
}
break;
case 3:
if (Utils.GetServerString(strName) != "")
{
str = Utils.GetServerString(strName);
}
break;
default:
break;
}
if (str == "")
{
return 0;
}
else
{
return Int32.Parse(str);
}
}
public static string GetUrlReferrer()
{//获取上一页的连接地址
string str = "";
try
{
str = HttpContext.Current.Request.UrlReferrer.ToString();
//本页直接打开获取这个值就是一个异常,所以处理下
}
catch { }
return str;
}
public static string GetCurrentFullHost()
{//获得主机和端口号
HttpRequest request = HttpContext.Current.Request;
if (!request.Url.IsDefaultPort)
{
return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString());
}
return request.Url.Host;
}
public static string GetHost()
{//直接获得的主机头
return HttpContext.Current.Request.Url.Host;
}
public static string GetRawUrl()
{//获得当前请求的从虚拟目录开始的:URl如有查询字符串则也包括在内
return HttpContext.Current.Request.RawUrl;
}
public static string GetUrl()
{//获得当前请求从HTTp:// Url如有查询字符串,则也包括在内
return HttpContext.Current.Request.Url.ToString();
}
public static string GetPageName()
{//返回当前页名字
string[] urlArr = HttpContext.Current.Request.Url.AbsolutePath.Split('/');
//这里是 AbsolutePath是返回一个不到参数的URl路径,不过Split注意里面要用'/'字符,而不是双引号
return urlArr[urlArr.Length - 1].ToLower();
}
public static int GetParamCount()
{//返回表单参数的总个数,无则返回0
return HttpContext.Current.Request.Form.Count + HttpContext.Current.Request.QueryString.Count;
//两个参数加起来就好了
}
public static bool IsIP(string ip)
{//判断是否为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 string GetIP()
{//获取ID地址
string result = String.Empty;
result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (null == result || result == String.Empty)
{
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
if (null == result || result == String.Empty)
{
result = HttpContext.Current.Request.UserHostAddress;
}
if (null == result || result == String.Empty || !Utils.IsIP(result))
{
return "0.0.0.0";
}
return result;
}
//-------------时间函数---------------------------------------------
public static string GetTime()
{
return DateTime.Now.ToString("HH:mm:ss");
}
public static string GetDateTime()
{
return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
public static string GetDateTime(int relativeday)
{
//+1重载
//返回增加了relativeday数的时间,当然也可以用 AddHours 增加小时了,还有分秒等等。。
return DateTime.Now.AddDays(relativeday).ToString("yyyy-MM-dd HH:mm:ss");
}
public static int GetTimeSpan(DateTime Dt_1, DateTime Dt_2)
{//返回两个时间差,差为两数之间的总秒数
TimeSpan Dt_3 = Dt_1 - Dt_2;
int _day = Dt_3.Days;
int _hours = Dt_3.Hours;
int _minutes = Dt_3.Minutes;
int _seconds = Dt_3.Seconds;
return ((((((_day * 60) + _hours) * 60) + _minutes) * 60) + _seconds);
}
public static DateTime GetDateTime(string str)
{
//用字符串来创建时间对象
string[] strArray = Regex.Split(str, "|:");
int _num = 1;
int _year = 0, _month = 0, _day = 0, _hours = 0, _minutes = 0, _seconds = 0;
for (int i = 0; i < strArray.Length; i++)
{
if (IsNumber(strArray[i]))
{
switch (_num)
{
case 1: _year = Int16.Parse(strArray[i]); break;
case 2: _month = Int16.Parse(strArray[i]); break;
case 3: _day = Int16.Parse(strArray[i]); break;
case 4: _hours = Int16.Parse(strArray[i]); break;
case 5: _minutes = Int16.Parse(strArray[i]); break;
case 6: _seconds = Int16.Parse(strArray[i]); break; default: break;
}
_num++;
}
}
if (_num >= 6)
{ //创建时间对象,否则就出错提示
return new DateTime(_year, _month, _day, _hours, _minutes, _seconds);
}
else
{
return new DateTime(1, 1, 1, 1, 1, 1);
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hfzsjz/archive/2009/12/29/5099008.aspx