using System; using System.IO; using System.Data; using System.Collections; using System.Text.RegularExpressions; using System.Web.UI; namespace Ant.Service.Utilities { /// /// Utility 的摘要说明。 /// public class Utility:Page { #region 数据转换 /// /// 返回对象obj的String值,obj为null时返回空值。 /// /// 对象。 /// 字符串。 public static string ToObjectString(object obj) { return null == obj ? String.Empty : obj.ToString(); } /// /// 将对象转换为数值(Int32)类型,转换失败返回-1。 /// /// 对象。 /// Int32数值。 public static int ToInt(object obj) { try { return int.Parse(ToObjectString(obj)); } catch { return -1; } } /// /// 将对象转换为数值(Int32)类型。 /// /// 对象。 /// 转换失败返回该值。 /// Int32数值。 public static int ToInt(object obj,int returnValue) { try { return int.Parse(ToObjectString(obj)); } catch { return returnValue; } } /// /// 将对象转换为数值(Long)类型,转换失败返回-1。 /// /// 对象。 /// Long数值。 public static long ToLong(object obj) { try { return long.Parse(ToObjectString(obj)); } catch { return -1L; } } /// /// 将对象转换为数值(Long)类型。 /// /// 对象。 /// 转换失败返回该值。 /// Long数值。 public static long ToLong(object obj,long returnValue) { try { return long.Parse(ToObjectString(obj)); } catch { return returnValue; } } /// /// 将对象转换为数值(Decimal)类型,转换失败返回-1。 /// /// 对象。 /// Decimal数值。 public static decimal ToDecimal(object obj) { try { return decimal.Parse(ToObjectString(obj)); } catch { return -1M; } } /// /// 将对象转换为数值(Decimal)类型。 /// /// 对象。 /// 转换失败返回该值。 /// Decimal数值。 public static decimal ToDecimal(object obj,decimal returnValue) { try { return decimal.Parse(ToObjectString(obj)); } catch { return returnValue; } } /// /// 将对象转换为数值(Double)类型,转换失败返回-1。 /// /// 对象。 /// Double数值。 public static double ToDouble(object obj) { try { return double.Parse(ToObjectString(obj)); } catch { return -1; } } /// /// 将对象转换为数值(Double)类型。 /// /// 对象。 /// 转换失败返回该值。 /// Double数值。 public static double ToDouble(object obj,double returnValue) { try { return double.Parse(ToObjectString(obj)); } catch { return returnValue; } } /// /// 将对象转换为数值(Float)类型,转换失败返回-1。 /// /// 对象。 /// Float数值。 public static float ToFloat(object obj) { try { return float.Parse(ToObjectString(obj)); } catch { return -1; } } /// /// 将对象转换为数值(Float)类型。 /// /// 对象。 /// 转换失败返回该值。 /// Float数值。 public static float ToFloat(object obj,float returnValue) { try { return float.Parse(ToObjectString(obj)); } catch { return returnValue; } } /// /// 将对象转换为数值(DateTime)类型,转换失败返回Now。 /// /// 对象。 /// DateTime值。 public static DateTime ToDateTime(object obj) { try { DateTime dt = DateTime.Parse(ToObjectString(obj)); if( dt > DateTime.MinValue && DateTime.MaxValue > dt) return dt; return DateTime.Now; } catch { return DateTime.Now; } } /// /// 将对象转换为数值(DateTime)类型。 /// /// 对象。 /// 转换失败返回该值。 /// DateTime值。 public static DateTime ToDateTime(object obj,DateTime returnValue) { try { DateTime dt = DateTime.Parse(ToObjectString(obj)); if( dt > DateTime.MinValue && DateTime.MaxValue > dt) return dt; return returnValue; } catch { return returnValue; } } /// /// 从Boolean转换成byte,转换失败返回0。 /// /// 对象。 /// Byte值。 public static byte ToByteByBool( object obj ) { string text = ToObjectString(obj).Trim(); if( text == string.Empty) return 0; else { try { return (byte)(text.ToLower()=="true"?1:0); } catch { return 0; } } } /// /// 从Boolean转换成byte。 /// /// 对象。 /// 转换失败返回该值。 /// Byte值。 public static byte ToByteByBool( object obj, byte returnValue ) { string text = ToObjectString(obj).Trim(); if( text == string.Empty) return returnValue; else { try { return (byte)(text.ToLower()=="true"?1:0); } catch { return returnValue; } } } /// /// 从byte转换成Boolean,转换失败返回false。 /// /// 对象。 /// Boolean值。 public static bool ToBoolByByte( object obj ) { try { string s = ToObjectString(obj).ToLower(); return s == "1" || s== "true"?true:false; } catch { return false; } } /// /// 从byte转换成Boolean。 /// /// 对象。 /// 转换失败返回该值。 /// Boolean值。 public static bool ToBoolByByte( object obj, bool returnValue ) { try { string s = ToObjectString(obj).ToLower(); return s == "1" || s== "true"?true:false; } catch { return returnValue; } } #endregion #region 数据判断 /// /// 判断文本obj是否为空值。 /// /// 对象。 /// Boolean值。 public static bool IsEmpty(string obj) { return ToObjectString(obj).Trim() == String.Empty ? true : false; } /// /// 判断对象是否为正确的日期值。 /// /// 对象。 /// Boolean。 public static bool IsDateTime(object obj) { try { DateTime dt = DateTime.Parse(ToObjectString(obj)); if( dt > DateTime.MinValue && DateTime.MaxValue > dt) return true; return false; } catch { return false; } } /// /// 判断对象是否为正确的Int32值。 /// /// 对象。 /// Int32值。 public static bool IsInt(object obj) { try { int.Parse(ToObjectString(obj)); return true; } catch { return false; } } /// /// 判断对象是否为正确的Long值。 /// /// 对象。 /// Long值。 public static bool IsLong(object obj) { try { long.Parse(ToObjectString(obj)); return true; } catch { return false; } } /// /// 判断对象是否为正确的Float值。 /// /// 对象。 /// Float值。 public static bool IsFloat(object obj) { try { float.Parse(ToObjectString(obj)); return true; } catch { return false; } } /// /// 判断对象是否为正确的Double值。 /// /// 对象。 /// Double值。 public static bool IsDouble(object obj) { try { double.Parse(ToObjectString(obj)); return true; } catch { return false; } } /// /// 判断对象是否为正确的Decimal值。 /// /// 对象。 /// Decimal值。 public static bool IsDecimal(object obj) { try { decimal.Parse(ToObjectString(obj)); return true; } catch { return false; } } #endregion #region 数据操作 /// /// 去除字符串的所有空格。 /// /// 字符串 /// 字符串 public static string StringTrimAll( string text ) { string _text = ToObjectString(text); string returnText = String.Empty; char[] chars = _text.ToCharArray(); for( int i=0;i /// 去除数值字符串的所有空格。 /// /// 数值字符串 /// String public static string NumricTrimAll( string numricString ) { string text = ToObjectString(numricString).Trim(); string returnText = String.Empty; char[] chars = text.ToCharArray(); for( int i=0;i /// 在数组中查找匹配对象类型 /// /// 数组 /// 对象 /// Boolean public static bool ArrayFind(Array array,object obj) { bool b = false; foreach(object obj1 in array) { if(obj.Equals(obj1)) { b = true; break; } } return b; } /// /// 在数组中查找匹配字符串 /// /// 数组 /// 对象 /// 是否忽略大小写 /// Boolean public static bool ArrayFind(Array array,string obj,bool unUpLower) { bool b = false; foreach(string obj1 in array) { if(!unUpLower) { if(obj.Trim().Equals(obj1.ToString().Trim())) { b = true; break; } } else { if(obj.Trim().ToUpper().Equals(obj1.ToString().Trim().ToUpper())) { b = true; break; } } } return b; } /// /// 替换字符串中的单引号。 /// /// 字符串 /// String public static string ReplaceInvertedComma( string inputString ) { return inputString.Replace("'","''"); } /// /// 判断两个字节数组是否具有相同值. /// /// 字节1 /// 字节2 /// Boolean public static bool CompareByteArray(byte[] bytea,byte[] byteb) { if(null == bytea || null == byteb) { return false; } else { int aLength = bytea.Length; int bLength = byteb.Length; if(aLength != bLength) return false; else { bool compare = true; for(int index = 0; index < aLength; index++) { if(bytea[index].CompareTo(byteb[index]) != 0) { compare = false; break; } } return compare; } } } /// /// 日期智能生成。 /// /// 字符串 /// DateTime public static string BuildDate( string inputText ) { try { return DateTime.Parse( inputText ).ToShortDateString(); } catch { string text = NumricTrimAll( inputText ); string year = DateTime.Now.Year.ToString(); string month = DateTime.Now.Month.ToString(); string day = DateTime.Now.Day.ToString(); int length = text.Length; if( length == 0 ) return String.Empty; else { if( length<=2 ) day = text; else if( length<=4 ) { month = text.Substring(0,2); day = text.Substring(2,length-2); } else if( length<=6 ) { year = text.Substring(0,4); month = text.Substring(4,length-4); } else if( length>6) { year = text.Substring(0,4); month = text.Substring(4,2); day = text.Substring(6,length-6); } try { return DateTime.Parse( year+"-"+month+"-"+day ).ToShortDateString(); } catch { return String.Empty; } } } } /// /// 检查文件是否真实存在。 /// /// 文件全名(包括路径)。 /// Boolean public static bool IsFileExists(string path) { try { return File.Exists(path); } catch { return false; } } /// /// 检查目录是否真实存在。 /// /// 目录路径. /// Boolean public static bool IsDirectoryExists(string path) { try { return Directory.Exists(Path.GetDirectoryName(path)); } catch { return false; } } /// /// 查找文件中是否存在匹配行。 /// /// 目标文件. /// 要查找的行文本. /// 是否区分大小写. /// Boolean public static bool FindLineTextFromFile(FileInfo fi,string lineText,bool lowerUpper) { bool b = false; try { if(fi.Exists) { StreamReader sr=new StreamReader(fi.FullName); string g = ""; do { g=sr.ReadLine(); if(lowerUpper) { if(ToObjectString(g).Trim() == ToObjectString(lineText).Trim()) { b = true; break; } } else { if(ToObjectString(g).Trim().ToLower() == ToObjectString(lineText).Trim().ToLower()) { b = true; break; } } } while(sr.Peek()!=-1); sr.Close(); } } catch { b =false; } return b; } /// /// 判断父子级关系是否正确。 /// /// 数据表。 /// 子键列名。 /// 父键列名。 /// 子键值。 /// 父键值。 /// public static bool IsRightParent(DataTable table,string columnName,string parentColumnName,string inputString,string compareString) { ArrayList array = new ArrayList(); SearchChild(array,table,columnName,parentColumnName,inputString,compareString); return array.Count == 0; } // 内部方法 private static void SearchChild(ArrayList array,DataTable table,string columnName,string parentColumnName,string inputString,string compareString) { DataView view = new DataView(table); view.RowFilter = parentColumnName+"='"+ReplaceInvertedComma(inputString.Trim())+"'";//找出所有的子类。 //查找表中的数据的ID是否与compareString相等,相等返回 false;不相等继续迭代。 for(int index = 0 ;index < view.Count;index ++) { if(Utility.ToObjectString(view[index][columnName]).ToLower() == compareString.Trim().ToLower()) { array.Add("1"); break; } else { SearchChild(array,table,columnName,parentColumnName,Utility.ToObjectString(view[index][columnName]),compareString); } } } #endregion #region 日期 /// /// 格式化日期类型,返回字符串 /// /// 日期 /// 日期年月日间隔符号 /// public static String Fomatdate(DateTime dtime,String s) { String datestr=""; datestr=dtime.Year.ToString() + s + dtime.Month.ToString().PadLeft(2,'0')+ s +dtime.Day.ToString().PadLeft(2,'0'); return datestr; } /// /// 返回日期差 /// /// 开始日期 /// 结束日期 /// 日期差:负数为失败 public static int Datediff(DateTime sdmin,DateTime sdmax) { try { double i=0; while(sdmin.AddDays(i) /// 返回日期差 /// /// 开始日期 /// 结束日期 /// 日期差:负数为失败 public static int Datediff(String sdmin,String sdmax) { try { DateTime dmin; DateTime dmax; dmin=DateTime.Parse(sdmin); dmax=DateTime.Parse(sdmax); double i=0; while(dmin.AddDays(i) /// 将用户输入的字符串转换为可换行、替换Html编码、无危害数据库特殊字符、去掉首尾空白、的安全方便代码。 /// /// 用户输入字符串 public static string ConvertStr(string inputString) { string retVal=inputString; //retVal=retVal.Replace("&","&"); retVal=retVal.Replace("\"","""); retVal=retVal.Replace("<","<"); retVal=retVal.Replace(">",">"); retVal=retVal.Replace(" "," "); retVal=retVal.Replace(" ","  "); retVal=retVal.Replace("\t","  "); retVal=retVal.Replace("\r", "
"); return retVal; } public static string InputText(string inputString) { string retVal=inputString; retVal= ConvertStr(retVal); retVal=retVal.Replace("[url]", ""); retVal=retVal.Replace("[/url]", ""); return retVal; } /// /// 将html代码显示在网页上 /// /// /// public static string OutputText(string inputString) { string retVal=System.Web.HttpUtility.HtmlDecode(inputString); retVal=retVal.Replace("
",""); retVal=retVal.Replace("&","&;"); retVal=retVal.Replace(""","\""); retVal=retVal.Replace("<","<"); retVal=retVal.Replace(">",">"); retVal=retVal.Replace(" "," "); retVal=retVal.Replace("  "," "); return retVal; } public static string ToUrl(string inputString) { string retVal=inputString; retVal= ConvertStr(retVal); return Regex.Replace(retVal,@"\[url](?[^\]]*)\[/url]",@"$1",RegexOptions.IgnoreCase); } public static string GetSafeCode(string str) { str=str.Replace("'",""); str=str.Replace(char.Parse("34"),' '); str=str.Replace(";",""); return str; } #endregion //#region 弹出框 ///// ///// 服务器端弹出alert对话框 ///// ///// 提示信息,例子:"请输入您姓名!" ///// Page类 //public static void Alert(string str_Message,Page page) //{ // page.RegisterStartupScript("",""); //} ///// ///// 服务器端弹出alert对话框 ///// ///// 获得焦点控件Id值,比如:txt_Name ///// 提示信息,例子:"请输入您姓名!" ///// Page类 //public static void Alert(string str_Ctl_Name,string str_Message,Page page) //{ // page.RegisterStartupScript("",""); //} ///// ///// 服务器端弹出confirm对话框,该函数有个弊端,必须放到响应事件的最后,目前没有妥善解决方案 ///// ///// 提示信息,例子:"您是否确认删除!" ///// 隐藏Botton按钮Id值,比如:btn_Flow ///// Page类 //public static void Confirm(string str_Message,string btn,Page page) //{ // page.RegisterStartupScript("",""); //} ///// ///// 服务器端弹出confirm对话框,询问用户准备转向相应操作,包括“确定”和“取消”时的操作 ///// ///// 提示信息,比如:"成功增加数据,单击\"确定\"按钮填写流程,单击\"取消\"修改数据" ///// "确定"按钮id值 ///// "取消"按钮id值 ///// Page类 //public static void Confirm(string str_Message,string btn_Redirect_Flow,string btn_Redirect_Self,Page page) //{ // page.RegisterStartupScript("",""); //} //#endregion /// /// 设置绑定到DataGrid的DataTable的记录行数,如不够则添加空行 /// /// 数据表 /// DataGrid分页时每页行数 public static void SetTableRows(DataTable myDataTable,int intPageCount) { try { int intTemp=myDataTable.Rows.Count%intPageCount; if ((myDataTable.Rows.Count==0) || (intTemp!=0)) { for(int i=0;i<(intPageCount-intTemp);i++) { DataRow myDataRow=myDataTable.NewRow(); myDataTable.Rows.Add(myDataRow); } } } catch { throw; } } public static string GetGuid(string guid) { return guid.Replace("-", ""); } public static string ReadConfig(string filePath) { return System.Configuration.ConfigurationManager.AppSettings[filePath]; } #region 字符串长度区分中英文截取 /// /// 截取文本,区分中英文字符,中文算两个长度,英文算一个长度 /// /// 待截取的字符串 /// 需计算长度的字符串 /// string public static string GetSubString(string str, int length) { string temp = str; int j = 0; int k = 0; for (int i = 0; i < temp.Length; i++) { if (Regex.IsMatch(temp.Substring(i, 1), @"[\u4e00-\u9fa5]+")) { j += 2; } else { j += 1; } if (j <= length) { k += 1; } if (j > length) { return temp.Substring(0, k) + "..."; } } return temp; } #endregion } }