using System; using System.Drawing; using System.IO; using System.Drawing.Imaging; using System.Collections; using System.Drawing.Printing; using System.Collections.Generic; using System.Globalization; namespace SysBaseLibs { public class UtilStr { /// /// 得到该对象的字符串,在字符串的两边加上“[”“]” /// /// 处理的对象 /// 字符串 public static string GetDelimitedStr(object poObject) { return ("[" + poObject.ToString() + "]"); } /// /// 连接连个对象的字符串型,并把他们连接成一个字符串返回出来。 /// /// /// /// public static string JoinString(object poFirst, object poSecond) { return string.Format("[{0}],[{1}]", poFirst.ToString().Trim(), poSecond.ToString().Trim()); } /// /// 将一个对象以字符串形式与另外一个字符串进行连接,并添加“[”,“]”标识符号 /// /// 被连接的字符串 /// 连接的字符串 /// 返回值 public static string AddStr(string pcSource, object poTobeAppended) { string lcStr = GetDelimitedStr(poTobeAppended); pcSource = pcSource.Trim(); if (pcSource == "") { return lcStr; } if ((pcSource[0] == '[') && (pcSource[pcSource.Length - 1] == ']')) { return (pcSource + string.Format(",[{0}]", poTobeAppended.ToString().Trim())); } return JoinString(pcSource, poTobeAppended); } /// /// 直接连接两个字符串 /// /// /// /// public static string AppendToStr(string pcSource, object poTobeAppended) { string lcStr = GetDelimitedStr(poTobeAppended); pcSource = pcSource.Trim(); if (pcSource != "") { lcStr = pcSource + "," + lcStr; } return lcStr; } /// /// 将一个Array转换成字符串,默认分割符为"," /// /// /// public static string ArrayToStr(Array paStr) { return ArrayToStrEx(paStr, ","); } /// /// 根据传入的分割符号将Array 转换成字符串 /// /// /// /// public static string ArrayToStrEx(Array paStr, string pcSeparator) { string lcStr = ""; foreach (string lcStr2 in paStr) { lcStr = lcStr + ((lcStr == "") ? "" : pcSeparator) + GetDelimitedStr(lcStr2); } return lcStr; } /// /// 将字符串转换成Array 对象 ,以","为分割符。 /// /// /// public static Array StrToArray(string str) { return StrToArrayEx(str, ","); } /// /// 将一个字符串以分割符转换成Array对象,如 a,[b,[c,d]],e 将分割成 a ; b,[c,d] ; e 三个串 /// /// /// /// public static Array StrToArrayEx(string str, string separator) { ArrayList list1 = new ArrayList(); str = (str == null) ? "" : str.Trim(); int num1 = separator.Length; while (str.Length > 0) { int num2 = str.IndexOf(separator); int num3 = str.IndexOf("["); if ((num3 >= 0) && (num3 < num2)) { int num4 = 1; int num5 = str.Length; int num6 = num3 + 1; while (num6 < num5) { switch (str[num6]) { case '[': num4++; goto Label_0082; case '\\': goto Label_0082; case ']': break; default: goto Label_0082; } num4--; Label_0082: if (num4 == 0) { break; } num6++; } num2 = str.IndexOf(separator, num6); } if (num2 < 0) { num2 = str.Length; } string text1 = str.Substring(0, num2); int num7 = text1.Length; if (((num7 > 0) && (text1[0] == '[')) && (text1[num7 - 1] == ']')) { text1 = text1.Substring(1, num7 - 2); } list1.Add(text1.Trim()); if ((num2 + num1) > str.Length) { str = ""; } else { str = str.Substring(num2 + num1).Trim(); } } Array array1 = Array.CreateInstance(typeof(string), list1.Count); list1.CopyTo(array1); return array1; } /// /// 将字符串转换成 Color 对象 /// /// /// public static Color colorFromStr(string str) { Color color1 = Color.Black; Array array1 = StrToArray(str); int num1 = 0; int num2 = 0; int num3 = 0; if (array1.Length >= 3) { num1 = (int)Utils.ValD((string)array1.GetValue(0)); num2 = (int)Utils.ValD((string)array1.GetValue(1)); num3 = (int)Utils.ValD((string)array1.GetValue(2)); color1 = Color.FromArgb(num1, num2, num3); } return color1; } /// /// Translate Color to String /// /// /// public static string colorToStr(Color color) { return (color.R.ToString() + "," + color.G.ToString() + "," + color.B.ToString()); } /// /// 从pcSource 末尾移除 pcRemoveStr /// /// /// /// public static string TrimEnd(string pcSource, string pcRemoveStr) { char[] chArray1 = pcRemoveStr.ToCharArray(); return pcSource.TrimEnd(chArray1); } /// /// 字符串转换成日期格式 /// /// /// public static DateTime StrToDt(string pcStr) { DateTime time1 = new DateTime(1900, 1, 1); try { return DateTime.Parse(pcStr); } catch (Exception) { } return new DateTime(1900, 1, 1); } /// /// 字符串转换成日期格式 /// /// /// public static DateTime StrToDt(string pcStr,string format) { DateTime time1 = new DateTime(1900, 1, 1); try { DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo(); dtFormat.ShortDatePattern = format; //DateTime dt = DateTime.ParseExact(pcStr, format, System.Globalization.CultureInfo.CurrentCulture); DateTime dt = Convert.ToDateTime(pcStr, dtFormat);//DateTime dt return dt; } catch (Exception err) { ThreadLog.LogException(err); } return new DateTime(1900, 1, 1); } /// /// 将 piCount 个 pcString 串成一个字符串 /// /// /// /// public static string Replicate(string pcString, int piCount) { string text1 = ""; for (int i = 0; i < piCount; i++) { text1 = text1 + pcString; } return text1; } /// /// Translate RectangleF to string /// /// /// public static string rectToStr(RectangleF rect) { return (rect.X.ToString() + "," + rect.Y.ToString() + "," + rect.Width.ToString() + "," + rect.Height.ToString()); } /// /// Translate string to RectangleF /// /// /// public static RectangleF rectFromStr(string str) { Array array1 = StrToArray(str); RectangleF ef1 = (RectangleF)new Rectangle(0, 0, 0, 0); if (array1.Length >= 4) { ef1.X = (float)Utils.ValD((string)array1.GetValue(0)); ef1.Y = (float)Utils.ValD((string)array1.GetValue(1)); ef1.Width = (float)Utils.ValD((string)array1.GetValue(2)); ef1.Height = (float)Utils.ValD((string)array1.GetValue(3)); } return ef1; } /// /// PrinterSettings To String /// /// /// public static string PrinterSettingToStr(PrinterSettings poSetting) { string text1 = ""; text1 = AppendToStr(text1, "PrinterName=" + poSetting.PrinterName); text1 = AppendToStr(text1, "FromPage=" + poSetting.FromPage.ToString()); text1 = AppendToStr(text1, "ToPage=" + poSetting.ToPage.ToString()); return AppendToStr(text1, "Copies=" + poSetting.Copies.ToString()); } /// /// String To PrinterSettings /// /// /// public static PrinterSettings PrinterSettingFromStr(string pcString) { PrinterSettings settings1 = new PrinterSettings(); Array array1 = StrToArray(pcString); foreach (string text1 in array1) { Array array2 = StrToArrayEx(text1, "="); if (array2.Length == 2) { string text4; string text2 = array2.GetValue(0).ToString(); string text3 = array2.GetValue(1).ToString(); if ((text4 = text2) != null) { text4 = string.IsInterned(text4); if (text4 == "PrinterName") { settings1.PrinterName = text3; } else { if (text4 == "FromPage") { settings1.FromPage = Utils.ValI(text3); continue; } if (text4 == "ToPage") { settings1.ToPage = Utils.ValI(text3); continue; } if (text4 == "Copies") { settings1.Copies = (short)Utils.ValI(text3); } } } } } return settings1; } public static string PrinterPageSettingToStr(PrinterSettings poPrinter, PageSettings poPage) { if (poPage == null) { return ("[" + PrinterSettingToStr(poPrinter) + "],[Default]"); } return ("[" + PrinterSettingToStr(poPrinter) + "],[" + PageSettingToStr(poPage) + "]"); } public static string PageSettingToStr(PageSettings poSetting) { string text1 = ""; text1 = AppendToStr(text1, "LeftMargin=" + poSetting.Margins.Left.ToString()); text1 = AppendToStr(text1, "TopMargin=" + poSetting.Margins.Top.ToString()); text1 = AppendToStr(text1, "RightMargin=" + poSetting.Margins.Right.ToString()); text1 = AppendToStr(text1, "BottomMargin=" + poSetting.Margins.Bottom.ToString()); text1 = AppendToStr(text1, "PaperSize=" + PaperSizeToStr(poSetting.PaperSize)); text1 = AppendToStr(text1, "Landscape=" + (poSetting.Landscape ? "Yes" : "No")); return AppendToStr(text1, "PaperSource=" + poSetting.PaperSource.SourceName); } public static string PaperSizeToStr(PaperSize poPaper) { return JoinString(poPaper.Kind.ToString(), poPaper.Width.ToString(), poPaper.Height.ToString()); } /// /// 将 几个对象的字符以 [],[],[],[] 格式连接起来 /// /// /// /// /// /// public static string JoinString(object poFirst, object poSecond, object poThird, object poFourth) { return string.Format("[{0}],[{1}], [{2}], [{3}]", new object[] { poFirst.ToString().Trim(), poSecond.ToString().Trim(), poThird.ToString().Trim(), poFourth.ToString().Trim() }); } /// /// 将 几个对象的字符以 [],[],[],[] 格式连接起来 /// /// /// /// /// public static string JoinString(object poFirst, object poSecond, object poThird) { return string.Format("[{0}],[{1}], [{2}]", poFirst.ToString().Trim(), poSecond.ToString().Trim(), poThird.ToString().Trim()); } public static string fontToStr(Font font) { string text1 = "Name:" + font.Name + ",Size:" + font.Size.ToString(); if (font.Underline) { text1 = text1 + ",Underline:Y"; } if (font.Italic) { text1 = text1 + ",Italic:Y"; } if (font.Strikeout) { text1 = text1 + ",Strikeout:Y"; } if (font.Bold) { text1 = text1 + ",Bold:Y"; } return text1; } /// /// 字符串转换成 Font 型 /// /// 传入字符串 /// 返回的font /// public static Font fontFromStr(string str) { Array array1 = StrToArray(str); Hashtable hashtable1 = new Hashtable(); for (int num1 = 0; num1 < array1.Length; num1++) { Array array2 = StrToArrayEx(array1.GetValue(num1).ToString(), ":"); if (array2.Length == 2) { hashtable1.Add(array2.GetValue(0), array2.GetValue(1)); } } string text1 = FontFamily.GenericSansSerif.Name; if (hashtable1.ContainsKey("Name")) { text1 = hashtable1["Name"].ToString(); } float single1 = 8f; if (hashtable1.ContainsKey("Size")) { single1 = (float)Utils.ValD(hashtable1["Size"].ToString()); } FontStyle style1 = FontStyle.Regular; if (hashtable1.ContainsKey("Bold")) { string text2 = hashtable1["Bold"].ToString(); if (text2 == "Y") { style1 |= FontStyle.Bold; } } if (hashtable1.ContainsKey("Italic")) { string text3 = hashtable1["Italic"].ToString(); if (text3 == "Y") { style1 |= FontStyle.Italic; } } if (hashtable1.ContainsKey("Underline")) { string text4 = hashtable1["Underline"].ToString(); if (text4 == "Y") { style1 |= FontStyle.Underline; } } if (hashtable1.ContainsKey("Strikeout")) { string text5 = hashtable1["Strikeout"].ToString(); if (text5 == "Y") { style1 |= FontStyle.Strikeout; } } return new Font(text1, single1, style1); } public static string UAndT(object poObject) { return UAndT(poObject.ToString()); } /// /// 将一个字符串转换成大写 /// /// /// public static string UAndT(string pcStr) { if (pcStr == null) { pcStr = ""; } return pcStr.ToUpper().Trim(); } /// /// 111,22,333;aaa,vbb,dssa /// /// /// /// public static Hashtable StrToHashtable(string pcKeys, string pcValues) { Hashtable hashtable1 = null; Array array1 = StrToArray(pcKeys); Array array2 = StrToArray(pcValues); if (array1.Length == array2.Length) { hashtable1 = new Hashtable(); for (int i = 0; i < array1.Length; i++) { if (!hashtable1.ContainsKey(UAndT(array1.GetValue(i)))) hashtable1.Add(UAndT(array1.GetValue(i)), array2.GetValue(i)); } } return hashtable1; } public static Dictionary StrToDictionary(string pcKeys, string pcValues) { Dictionary loRetVal = null; Array array1 = StrToArray(pcKeys); Array array2 = StrToArray(pcValues); if (array1.Length == array2.Length) { loRetVal = new Dictionary(); for (int i = 0; i < array1.Length; i++) { if (!loRetVal.ContainsKey(UAndT(array1.GetValue(i)))) loRetVal.Add(UAndT(array1.GetValue(i)), array2.GetValue(i)); } } return loRetVal; } /// /// 如果 传人的字符 为 TRUE、YES 或者 Y ,1 返回 true。 /// /// /// public static bool StrToBool(string pcStr) { bool lbRetVal = false; pcStr = UAndT(pcStr); if (((pcStr != "TRUE") && (pcStr != "YES")) && (pcStr != "Y") && (pcStr != "1")) { return lbRetVal; } return true; } public static string GetItemFromStrEx(string pcStr, int piIndex, string separator) { string lcRetVal = ""; Array loArr = StrToArrayEx(pcStr, separator); if ((piIndex < loArr.Length) && (piIndex >= 0)) { lcRetVal = loArr.GetValue(piIndex).ToString(); } return lcRetVal; } public static string FormatStr(string pcString) { return pcString.Replace("[", "").Replace("]", "").Trim(); } public static string StrFromObj(object poObj) { if (poObj == null) { return ""; } return poObj.ToString(); } } }