您的位置:首页 > 编程语言 > C#

c#一些常用的方法集合

2015-12-31 16:12 519 查看
是从一个asp.net mvc的项目里看到的。挺实用的。

通过身份证号码获取出生日期和性别

通过身份证号码获取出生日期和性别

#region 由身份证获得出生日期
public static string CardBrith(string CardNo)
{
return CardNo.Substring(6, 4) + "-" + CardNo.Substring(10, 2) + "-" + CardNo.Substring(12, 2);
}
#endregion

#region 由身份证获得性别
public static string CardSex(string CardNo)
{
string sSex = "";
int sex = Convert.ToInt16(CardNo.Substring(16, 1));
if (sex % 2 == 0)//性别代码为偶数是女性奇数为男性
{
sSex = "女";
}
else
{
sSex = "男";
}
return sSex;
}
#endregion


验证身份证号码:

#region 验证身份证号码
/// <summary>
/// 验证身份证号码,正确返回true
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
public static bool CardNO(string Id)
{

long n = 0;

if (long.TryParse(Id.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false)
{

return false;//数字验证

}

string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";

if (address.IndexOf(Id.Remove(2)) == -1)
{

return false;//省份验证

}

string birth = Id.Substring(6, 8).Insert(6, "-").Insert(4, "-");

DateTime time = new DateTime();

if (DateTime.TryParse(birth, out time) == false)
{

return false;//生日验证

}

string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');

string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');

char[] Ai = Id.Remove(17).ToCharArray();

int sum = 0;

for (int i = 0; i < 17; i++)
{

sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());

}

int y = -1;

Math.DivRem(sum, 11, out y);

if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower())
{

return false;//校验码验证

}

return true;//符合GB11643-1999标准

}
#endregion


字符串解码

#region 字符串解码
/// <summary>
/// 字符串解码
/// </summary>
/// <param name="str">原字符</param>
/// <returns>解码后的字符</returns>
public static string StrDecode(string str)
{
if (string.IsNullOrEmpty(str)) { return str; }
return System.Web.HttpUtility.HtmlDecode(str); ;
}
#endregion


字符串编码

#region 字符串编码
/// <summary>
/// 目前只做字符串编码
/// </summary>
/// <param name="str">原字符</param>
/// <returns>编码后的字符</returns>
public static string StrEncode(string str)
{
if (string.IsNullOrEmpty(str)) { return str; }
return System.Web.HttpUtility.HtmlEncode(str);
}
#endregion


获得分页记录

#region 获得分页记录
/// <summary>
/// 获得分页记录,返回DataTable类型
/// </summary>
/// <param name="tblName">表名</param>
/// <param name="strGetFields">需返回的字段</param>
/// <param name="strWhere">条件</param>
/// <param name="OrderType">排序字段</param>
/// <param name="PageIndex">当前页面</param>
/// <param name="PageSize">页尺寸</param>
/// <returns>返回DataTable类型</returns>
public static DataTable GetPageData(string tblName, string strGetFields, string strWhere, string OrderType, int PageIndex, int PageSize)
{
SqlParameter[] para = {
new SqlParameter("@Table", SqlDbType.VarChar, 1000){Value=tblName},//表名
new SqlParameter("@Fields", SqlDbType.VarChar, 5000){Value=strGetFields},//返回的列
new SqlParameter("@Where", SqlDbType.VarChar, 1000){Value=strWhere},//where条件
new SqlParameter("@OrderBy",SqlDbType.VarChar, 500){Value=OrderType},//排序
new SqlParameter("@CurrentPage",SqlDbType.Int,4){Value=PageIndex},//页码
new SqlParameter("@PageSize", SqlDbType.Int,4){Value=PageSize}//页尺寸
};
DataTable dt = new DataTable();
XBSQL.RunProc("Pages", out dt, para);
return dt;
}
#endregion


获得符合条件指定列的和

#region 获得符合条件指定列的和
/// <summary>
/// 返回符合条件指定列的和
/// </summary>
/// <param name="Field">列</param>
/// <param name="TableName">表名</param>
/// <param name="WhereSql">条件</param>
/// <returns></returns>
public static double RsSum(string Field, string TableName, string WhereSql)
{
string Num = XBSQL.EScalar("select sum(" + Field + ") from " + TableName + " where " + WhereSql + "").ToString();
Num = (string.IsNullOrEmpty(Num)) ? "0" : Num;
return Convert.ToDouble(Num);
}

#endregion


获取记录总和

#region 获得记录总数
/// <summary>
/// 获得满足条件的记录总数
/// </summary>
/// <param name="TableName">表名</param>
/// <param name="WhereSql">条件</param>
/// <returns></returns>
public static int RsCount(string TableName, string WhereSql)
{
int i = 0;
int.TryParse(XBSQL.EScalar("select Count(*) from " + TableName + " where " + WhereSql + "").ToString(), out i);
return i;
//return Convert.ToInt32(XBSQL.EScalar("select Count(*) from " + TableName + " where " + WhereSql + ""));
}
#endregion














根据参数读取数据库,获取多条记录单个字段


#region 根据参数读取数据库,获取多条记录单个字段
/// <summary>
/// 获取多条记录单个字段
/// </summary>
/// <param name="field"></param>
/// <param name="table"></param>
/// <param name="where"></param>
/// <returns></returns>
public static string RDSQL(string field, string table, string where)
{
StringBuilder Str = new StringBuilder();
try
{
string sql = "select " + field + " from " + table + " where " + where + "";
SqlDataReader dr = XBSQL.EReader(sql);
while (dr.Read())
{
Str.Append("," + dr[0].ToString().Trim());
}
dr.Close();
if (Str.Length > 0)
{
Str.Remove(0, 1);
return Str.ToString();
}
else
{
return "";
}
}
catch (Exception Error)
{

}
finally
{
Str.Length = 0;
}
return "";
}
#endregion


字符串截取

#region 字符串截取
/// <summary>
/// str为要进行截取的字符串,start是第一个关键字(字符串),last是第二个关键字(字符串),n截取字符串方式
/// </summary>
/// <param name="str"></param>
/// <param name="start"></param>
/// <param name="last"></param>
/// <param name="n"></param>
/// <returns></returns>
public static string GetContent(string str, string start, string last, int n)
{
string ResStr = "";
if (str.ToLower().IndexOf(start.ToLower()) >= 0)
{
if (str.ToLower().IndexOf(last.ToLower()) >= 0)
{
switch (n)
{
//左右都截取(都取前面)(包含关键字)
case 1: ResStr = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower()));
ResStr = ResStr.Substring(0, ResStr.ToLower().IndexOf(last.ToLower()) + last.Length); break;
//左右都截取(都取前面)(去除关键字)
case 2: ResStr = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length);
ResStr = ResStr.Substring(0, ResStr.ToLower().IndexOf(last.ToLower())); break;
default: ResStr = ""; break;
}
}
}
return ResStr;
}
public static string GetContent(string str, string start, int n)
{
string ResStr = "";
switch (n)
{
//只往左截取(取前面的)(包含关键字)
case 1: ResStr = str.Substring(0, str.ToLower().IndexOf(start.ToLower()) + start.Length); break;
//只往左截取(取前面的)(去除关键字)
case 2:
int StrIndex = str.ToLower().IndexOf(start.ToLower());
if (StrIndex > 0)
{
ResStr = str.Substring(0, StrIndex);
}
break;
//只往右截取(取前面的)(包含关键字)
case 3: ResStr = str.Substring(str.ToLower().IndexOf(start.ToLower()), str.Length - str.ToLower().IndexOf(start.ToLower())); break;
//只往右截取(取前面的)(去除关键字)
case 4: ResStr = str.Substring(str.ToLower().IndexOf(start.ToLower()) + start.Length, str.Length - str.ToLower().IndexOf(start.ToLower()) - start.Length); break;
default: ResStr = ""; break;
}
return ResStr;
}
#endregion


判断ip格式

#region 判断是否是IP格式
/// <summary>
/// 判断是否是IP地址格式 0.0.0.0
/// </summary>
/// <param name="str1">待判断的IP地址</param>
/// <returns>true or false</returns>
public static bool IsIPAddress(string str1)
{
if (str1 == null || str1 == string.Empty || str1.Length < 7 || str1.Length > 15) return false;
string regformat = @"^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$";
Regex regex = new Regex(regformat, RegexOptions.IgnoreCase);
return regex.IsMatch(str1);
}
#endregion


获取ip

#region 获得IP
/// <summary>
/// 取得客户端真实IP。如果有代理则取第一个非内网地址
/// </summary>
public static string IPAddress
{
get
{
string result = String.Empty;
result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (result != null && result != String.Empty)
{
//可能有代理
if (result.IndexOf(".") == -1)    //没有"."肯定是非IPv4格式
result = null;
else
{
if (result.IndexOf(",") != -1)
{
//有",",估计多个代理。取第一个不是内网的IP。
result = result.Replace(" ", "").Replace("\"", "");
string[] temparyip = result.Split(",;".ToCharArray());
for (int i = 0; i < temparyip.Length; i++)
{
if (IsIPAddress(temparyip[i])
&& temparyip[i].Substring(0, 3) != "10."
&& temparyip[i].Substring(0, 7) != "192.168"
&& temparyip[i].Substring(0, 7) != "172.16.")
{
return temparyip[i];    //找到不是内网的地址
}
}
}
else if (IsIPAddress(result)) //代理即是IP格式
return result;
else
result = null;    //代理中的内容 非IP,取IP
}
}
string IpAddress = (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != String.Empty) ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (null == result || result == String.Empty)
result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
if (result == null || result == String.Empty)
result = HttpContext.Current.Request.UserHostAddress;
return result;
}
}
#endregion


转换成日期格式

#region 转换成日期格式
/// <summary>
/// 转换成日期格式,非日期返回空值
/// </summary>
/// <param name="Str">值</param>
/// <returns></returns>
public static string ToDate(string Str, string Format)
{
DateTime LDate;
DateTime dt1 = DateTime.Parse("1900-01-01");
DateTime dt2 = DateTime.Parse("9999-12-31");
if (DateTime.TryParse(Str, out LDate) && DateTime.Compare(LDate, dt1) > 0 && DateTime.Compare(LDate, dt2) < 0)
{
Str = LDate.ToString("" + Format + "");
}
else
{
Str = "";
}
return Str.Trim();
}
#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: