您的位置:首页 - IT技术
C#常用的经典方法收集

各个方法集合在类Utils中,代码如下:
// Utils收集各种函数
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值 keleyi.com
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);

}

}
本站导航
相关文章
柯乐义 Copyright© keleyi.com