ÿþusing System; using System.Collections.Generic; using System.Text; using System.Text.RegularExpressions; namespace HH.WMS.Utils { public partial class ZString { private static Regex RegexBr = new Regex(@"(\r\n)", RegexOptions.IgnoreCase); // public static Regex RegexFont = new Regex(@"<font color=" + "\".*?\"" + @">([\s\S]+?)</font>", Utils.GetRegexCompiledOptions()); /// <summary> /// –™W[Ík'Y™Q /// </summary> /// <param name="str"></param> /// <returns></returns> public static string ToTitleCase(string str) { return System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(str); } /// <summary> /// ԏÞVW[&{2Nwž[•¦^, 1*NIlW[•¦^:N2 /// </summary> /// <returns></returns> public static int GetStringLength(string str) { return Encoding.Default.GetBytes(str).Length; } /// <summary> /// $R­ecš[W[&{2N(Wcš[W[&{2NpeÄ~-N„vMOn /// </summary> /// <param name="strSearch">W[&{2N</param> /// <param name="stringArray">W[&{2NpeÄ~</param> /// <param name="caseInsensetive">/f&T N:SR'Y\™Q, true:N N:SR, false:N:SR</param> /// <returns>W[&{2N(Wcš[W[&{2NpeÄ~-N„vMOn, ‚Y NX[(WRԏÞV-1</returns> public static int GetInArrayID(string strSearch, string[] stringArray, bool caseInsensetive) { for (int i = 0; i < stringArray.Length; i++) { if (caseInsensetive) { if (strSearch.ToLower() == stringArray[i].ToLower()) { return i; } } else { if (strSearch == stringArray[i]) { return i; } } } return -1; } /// <summary> /// Rd–W[&{2N>\萄vÞVf/bcLˆ/zz /// <param name="str"></param> /// <returns></returns> public static string RTrim(string str) { for (int i = str.Length; i >= 0; i--) { if (str[i].Equals(" ") || str[i].Equals("\r") || str[i].Equals("\n")) { str.Remove(i, 1); } } return str; } /// <summary> /// nd–Ù~š[W[&{2N-N„vÞVfÊSbcLˆ&{ /// </summary> /// <param name="str">‰nd–„vW[&{2N</param> /// <returns>nd–TԏÞV„vW[&{2N</returns> public static string ClearBR(string str) { Match m = null; for (m = RegexBr.Match(str); m.Success; m = m.NextMatch()) { str = str.Replace(m.Groups[0].ToString(), ""); } return str; } /// <summary> /// W[&{2N‚YœgÍdǏcš[•¦^R\…úQ„vèR(ucš[W[&{2NãNÿf /// </summary> /// <param name="p_SrcString">‰Àhåg„vW[&{2N</param> /// <param name="p_Length">cš[•¦^</param> /// <param name="p_TailString">(uŽNÿfbc„vW[&{2N</param> /// <returns>*bÖST„vW[&{2N</returns> public static string GetSubString(string p_SrcString, int p_Length, string p_TailString) { return GetSubString(p_SrcString, 0, p_Length, p_TailString); } /// <summary> /// ÖScš[•¦^„vW[&{2N /// </summary> /// <param name="p_SrcString">‰Àhåg„vW[&{2N</param> /// <param name="p_StartIndex">wËYMOn</param> /// <param name="p_Length">cš[•¦^</param> /// <param name="p_TailString">(uŽNÿfbc„vW[&{2N</param> /// <returns>*bÖST„vW[&{2N</returns> public static string GetSubString(string p_SrcString, int p_StartIndex, int p_Length, string p_TailString) { string myResult = p_SrcString; //S_/fåe‡eb闇eöe(èl:-N‡e„vƒôV:\u4e00 - \u9fa5, åe‡e(W\u0800 - \u4e00, 闇e:N\xAC00-\xD7A3) if (System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\u0800-\u4e00]+") || System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\xAC00-\xD7A3]+")) { //S_*bÖS„vwËYMOn…úQW[µk2N•¦^öe if (p_StartIndex >= p_SrcString.Length) { return ""; } else { return p_SrcString.Substring(p_StartIndex, ((p_Length + p_StartIndex) > p_SrcString.Length) ? (p_SrcString.Length - p_StartIndex) : p_Length); } } if (p_Length >= 0) { byte[] bsSrcString = Encoding.Default.GetBytes(p_SrcString); //S_W[&{2N•¦^'YŽNwËYMOn if (bsSrcString.Length > p_StartIndex) { int p_EndIndex = bsSrcString.Length; //S_‰*bÖS„v•¦^(WW[&{2N„v gHe•¦^ƒôV…Q if (bsSrcString.Length > (p_StartIndex + p_Length)) { p_EndIndex = p_Length + p_StartIndex; } else { //S_ N(W gHeƒôV…Qöe,êSÖS0RW[&{2N„vÓ~>\ p_Length = bsSrcString.Length - p_StartIndex; p_TailString = ""; } int nRealLength = p_Length; int[] anResultFlag = new int[p_Length]; byte[] bsResult = null; int nFlag = 0; for (int i = p_StartIndex; i < p_EndIndex; i++) { if (bsSrcString[i] > 127) { nFlag++; if (nFlag == 3) { nFlag = 1; } } else { nFlag = 0; } anResultFlag[i] = nFlag; } if ((bsSrcString[p_EndIndex - 1] > 127) && (anResultFlag[p_Length - 1] == 1)) { nRealLength = p_Length + 1; } bsResult = new byte[nRealLength]; Array.Copy(bsSrcString, p_StartIndex, bsResult, 0, nRealLength); myResult = Encoding.Default.GetString(bsResult); myResult = myResult + p_TailString; } } return myResult; } /// <summary> /// ꁚ[IN„vÿfbcW[&{2NýQpe /// </summary> public static string ReplaceString(string SourceString, string SearchString, string ReplaceString, bool IsCaseInsensetive) { return Regex.Replace(SourceString, Regex.Escape(SearchString), ReplaceString, IsCaseInsensetive ? RegexOptions.IgnoreCase : RegexOptions.None); } /// <summary> /// RrRW[&{2N /// </summary> public static string[] SplitString(string strContent, string strSplit) { if (strContent.IndexOf(strSplit) < 0) { string[] tmp = { strContent }; return tmp; } return Regex.Split(strContent, Regex.Escape(strSplit), RegexOptions.IgnoreCase); } /// <summary> /// RrRW[&{2N /// </summary> /// <param name="strContent">…_RrRW[&{2N</param> /// <param name="strSplit">R”–&{</param> /// <param name="p_3">cš[RrRpeÄ~'Y\</param> /// <returns>string[]</returns> public static string[] SplitString(string strContent, string strSplit, int p_3) { string[] result = new string[p_3]; string[] splited = SplitString(strContent, strSplit); for (int i = 0; i < p_3; i++) { if (i < splited.Length) result[i] = splited[i]; else result[i] = string.Empty; } return result; } } }