一个项目中使用到的通用函数库(2) 字符操作

来源:互联网 发布:jquery源码 each实现 编辑:程序博客网 时间:2024/06/01 18:26

 

#region  字符操作
        
/// <summary>
        
/// 文本调试模版
        
/// </summary>
        public const string Text_DebugTemplate = "<div align="center"><div style="Background-color:#f3f3f3;color:#000000;width:75%;height:120px;font-family:'Times New Roman';font-size:14px;border:1px #cccccc dotted;padding:5px;">" +
            
"<fieldset style="height:100%"><legend>===========调试信息==============</legend>" +
            
"<div align="left"  style="text-indent:24px;font-family:fixedsys;font-size:12px;color:red;word-break:break-all;line-height:150%;padding-left:32px;padding-right:32px;">[信息内容]</div>" +
            
"</fieldset></div></div>";

        
#region 编码和格式转化
        
/// <summary>
        
/// 从一种编码到另一种编码
        
/// </summary>
        
/// <param name="str">源字符串</param>
        
/// <param name="From">From</param>
        
/// <param name="To">To</param>
        
/// <returns></returns>
        string ConertStr(string str, string From, string To)
        {

            
byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str);
            bs 
= System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs);
            
string res = System.Text.Encoding.GetEncoding(To).GetString(bs);
            
return res;

        }

        
/// <summary>
        
/// 获取能够在客户端显示的XML文本内容
        
/// </summary>
        
/// <param name="OStr">文本内容</param>
        
/// <returns>合格的XML文本内容</returns>
        public static string Text_GetXMLString(string OStr)
        {
            
return OStr.Replace("'""").Replace(">""&gt;").Replace("<""&lt;").Replace("&""&amp;");
        }

        
/// <summary>
        
/// 获取能够在客户端显示的Javascript文本内容
        
/// </summary>
        
/// <param name="OStr">文本内容</param>
        
/// <returns>合格的Javascript文本内容</returns>
        public static string Text_GetJsString(string OStr)
        {
            
return OStr.Replace("'""/'").Replace(""""/" + """).Replace(" ""/" + "n").Replace(" ""/" + "r").Replace(" ""/" + "n" + "/" + "r");
        }

        
/// <summary>
        
/// 普通文本转换为HTML文本
        
/// </summary>
        
/// <param name="sText">普通文本内容</param>
        
/// <returns>HTML格式文本</returns>
        public static string Text_Plain2Html(string sText)
        {
            
string rStr = string.Empty;
            
if (sText.Length > 0)
            {
                rStr 
= sText.Replace(" ""<br>").Replace(" ""<br>").Replace(" ""<br>").Replace(" ""&nbsp;");
            }
            
else
            {
                rStr 
= "";
            }
            
return rStr;

        }

        
/// <summary>
        
/// 数组转换为普通字符
        
/// </summary>
        
/// <param name="StringArray">字符数组</param>
        
/// <param name="Sperator">字符分隔符</param>
        
/// <returns>该数组的字符串表现形式</returns>
        public static string Text_ArrayToString(string[] StringArray, string Sperator)
        {
            
int Len = StringArray.Length;
            
string ReturnString = String.Empty;
            
for (int i = 0; i < Len; i++)
            {
                ReturnString 
+= (i > 0? (Sperator + StringArray[i]) : (StringArray[i]);
            }
            
return ReturnString;
        }


        
/// <summary>
        
/// 数组转换为普通字符
        
/// </summary>
        
/// <param name="IntArrayArray">整形数组</param>
        
/// <param name="Sperator">字符分隔符</param>
        
/// <returns>该数组的字符串表现形式</returns>
        public static string Text_ArrayToString(int[] IntArray, string Sperator)
        {
            
int Len = IntArray.Length;
            
string ReturnString = String.Empty;
            
for (int i = 0; i < Len; i++)
            {
                ReturnString 
+= (i > 0? (Sperator + IntArray[i].ToString()) : (IntArray[i].ToString());
            }
            
return ReturnString;
        }

        
/// <summary>
        
/// 返回字符的ASCII值
        
/// </summary>
        
/// <param name="String">字符</param>
        
/// <returns>该字符的ASCII</returns>
        public static int Text_Asc(char __String)
        {
            
int num1;
            
int num2;
            
byte[] array1;
            
char[] array2;
            Encoding encoding1;
            
int num3;
            
byte num4;
            
char[] array3;


            num2 
= Convert.ToInt32(__String);
            
if (num2 < 128)
            {
                
return num2;
            }
            
try
            {
                encoding1 
= Encoding.Default;//------当前代码页
                array3 = new char[1];
                array3[
0= __String;
                array2 
= array3;

                
if (encoding1.GetMaxByteCount(1== 1)
                {
                    array1 
= new byte[1];
                    num3 
= encoding1.GetBytes(array2, 01, array1, 0);
                    num1 
= array1[0];
                    
return num1;

                }
                array1 
= new byte[2];
                num3 
= encoding1.GetBytes(array2, 01, array1, 0);
                
if (num3 == 1)
                {
                    num1 
= array1[0];
                    
return num1;

                }
                
if (BitConverter.IsLittleEndian)
                {
                    num4 
= array1[0];
                    array1[
0= array1[1];
                    array1[
1= num4;

                }
                num1 
= BitConverter.ToInt16(array1, 0);

            }
            
catch (Exception exception1)
            {
                
throw exception1;

            }
            
return num1;
        }

        
/// <summary>
        
/// 去处int[]数组里面的重复项
        
/// </summary>
        
/// <param name="myData">用于处理的数组</param>
        
/// <returns>返回处理后 没有重复项的数组</returns>
        public static int[] RemoveDup(int[] myData)
        {
            
if (myData.Length > 0)
            {
                Array.Sort(myData);

                
int size = 1;  //at  least  1  
                for (int i = 1; i < myData.Length; i++)
                    
if (myData[i] != myData[i - 1])
                        size
++;

                
int[] myTempData = new int[size];

                
int j = 0;

                myTempData[j
++= myData[0];

                
for (int i = 1; i < myData.Length; i++)
                    
if (myData[i] != myData[i - 1])
                        myTempData[j
++= myData[i];

                
return myTempData;
            }

            
return myData;
        }
        
/// <summary>
        
/// 替换重复的数组元素
        
/// </summary>
        
/// <param name="ObjStr">字符串</param>
        
/// <param name="separator">字符串中的分隔符</param>
        
/// <returns>不含重复的数组元素</returns>
        public static string RWDistinct(string ObjStr, string separator)
        {
            
int i, s;
            
string sResult = "";
            
if (ObjStr == string.Empty) { sResult = ""; }
            
else
            {
                
string[] arrStr = System.Text.RegularExpressions.Regex.Split(ObjStr, separator);
                
for (i = 0; i < arrStr.Length; i++)
                {
                    
if (i == 0) { sResult = arrStr[0]; }
                    
else if (i == 1)
                    { sResult 
+= (arrStr[1== sResult) ? (string.Empty) : (separator + arrStr[1]); }
                    
else
                    {
                        
bool StrExist = false;
                        
string[] resultArray = System.Text.RegularExpressions.Regex.Split(sResult, separator);
                        
for (s = 0; s < resultArray.Length; s++)
                        {
                            
if (resultArray[s] == arrStr[i])
                            { StrExist 
= truebreak; }
                        }
                        sResult 
+= StrExist ? string.Empty : (separator + arrStr[i]);
                    }
                }
            }
            
return sResult;
        }

        
/// <summary>
        
/// 客户端输出调式信息
        
/// </summary>
        
/// <param name="Message">信息内容(字符)</param>
        public static void Text_DebugString(string Message)
        {
            HttpContext.Current.Response.Write(Text_DebugTemplate.Replace(
"[信息内容]", Message));
        }


        
/// <summary>
        
/// 客户端输出调式信息,自定义标题。
        
/// </summary>
        
/// <param name="Message">信息内容(字符)</param>
        
/// <param name="Topic">标题</param>
        public static void Text_DebugString(string Message, string Topic)
        {
            HttpContext.Current.Response.Write(Text_DebugTemplate.Replace(
"[信息内容]", Message).Replace("调试信息", Topic));
        }

        
/// <summary>
        
/// 客户端输出调式信息
        
/// </summary>
        
/// <param name="Message">信息内容(字符组)</param>
        public static void Text_DebugString(string[] Message)
        {
            StringBuilder sb 
= new StringBuilder();
            
for (int i = 0; i < Message.Length; i++)
            {
                sb.Append(Message[i] 
+ "<br><br>");
            }
            
string sMessage = sb.ToString();
            HttpContext.Current.Response.Write(Text_DebugTemplate.Replace(
"[信息内容]", sMessage));
        }
        
/// <summary>
        
/// 
        
/// </summary>
        
/// <param name="ObjStr"></param>
        
/// <param name="separator"></param>
        
/// <returns></returns>
        public static string Text_DistinctString(string ObjStr, string separator)
        {
            
string text1 = "";
            
if (ObjStr == string.Empty)
            {
                text1 
= "";
            }
            
else
            {
                
string[] textArray1 = Regex.Split(ObjStr, separator);
                
for (int num1 = 0; num1 < textArray1.Length; num1++)
                {
                    
if (num1 == 0)
                    {
                        text1 
= textArray1[0];
                        
continue;
                    }
                    
if (num1 == 1)
                    {
                        text1 
= text1 + ((textArray1[1== text1) ? string.Empty : (separator + textArray1[1]));
                        
continue;
                    }
                    
bool flag1 = false;
                    
string[] textArray2 = Regex.Split(text1, separator);
                    
for (int num2 = 0; num2 < textArray2.Length; num2++)
                    {
                        
if (textArray2[num2] == textArray1[num1])
                        {
                            flag1 
= true;
                            
break;
                        }
                    }
                    text1 
= text1 + (flag1 ? string.Empty : (separator + textArray1[num1]));
                }
            }
            
return text1;
        }

        
/// <summary>
        
/// 代码内容里的文件,主要处理[IMG]标记里的文件。
        
/// </summary>
        
/// <param name="UBBContent">UBB代码内容</param>
        
/// <returns>所有本地服务器文件的相对(根目录)路径</returns>
        public static string Text_GetUBBFiles(string UBBContent, string FileSperator)
        {
            
string str1 = String.Empty;
            UBBContent 
= UBBContent.ToLower();
            
if (UBBContent.IndexOf("[img]"!= -1 && UBBContent.IndexOf("[/img]"!= -1)
            {
                
int i = 0;
                
int j = 0;
                
int k = 0;
                
for (; UBBContent.IndexOf("[img]", i) != -1; i = j + 6)
                {
                    i 
= UBBContent.IndexOf("[img]", i) + 5;
                    j 
= UBBContent.IndexOf("[/img]", i);
                    
string str2 = UBBContent.Substring(i, j - i);
                    
if (str2.IndexOf("http"== -1)
                    {
                        str1 
= String.Concat(str1, (k != 0? String.Concat(FileSperator, str2) : str2);
                        k
++;
                    }
                }
            }
            
return str1;
        }

        
public static string Text_getByteString(string String, int ByteLen)
        {
            
byte[] buffer1 = Encoding.Default.GetBytes(String);
            
if (buffer1.Length > ByteLen)
            {
                
return Encoding.Default.GetString(buffer1, 0, ByteLen);
            }
            
return String;
        }

        
public static string Text_GetExt(string FileName)
        {
            
if ((FileName != string.Empty) && (FileName.IndexOf("."!= -1))
            {
                
return FileName.Substring(FileName.LastIndexOf("."+ 1);
            }
            
return string.Empty;
        }

        
public static string Text_GetSize(int filesize)
        {
            
int num1;
            
if (filesize <= 0)
            {
                
return "未知";
            }
            
if (filesize > 0x100000)
            {
                num1 
= filesize / 0x100000;
                
return (num1.ToString() + "M");
            }
            
if (filesize > 0x400)
            {
                num1 
= filesize / 0x400;
                
return (num1.ToString() + "K");
            }
            
return (filesize.ToString() + "B");
        }



        
public static bool Text_RubbishString(string PostString)
        {
            
return false;
        }
        
#endregion

        
#region 字符串长度/截取

        
/// <summary>
        
/// 检测含有中文字符串的实际长度
        
/// </summary>
        
/// <param name="str">字符串</param>
        public static int cnLenth(string str)
        {
            System.Text.ASCIIEncoding n 
= new System.Text.ASCIIEncoding();
            
byte[] b = n.GetBytes(str);
            
int l = 0// l 为字符串之实际长度
            for (int i = 0; i <= b.Length - 1; i++)
            {
                
if (b[i] == 63//判断是否为汉字或全脚符号
                {
                    l
++;
                }
                l
++;
            }
            
return l;
        }

        
//public static string SubString(string stringToSub, int length)
        
//{
        
//    Regex regex = new Regex([u4e00-u9fa5]+, RegexOptions.Compiled);
        
//    char[] stringChar = stringToSub.ToCharArray();
        
//    StringBuilder sb = new StringBuilder();
        
//    int nLength = 0;

        
//    for(int i = 0; i < stringChar.Length; i++) {
        
//        if (regex.IsMatch((stringChar[i]).ToString())) {
        
//            sb.Append(stringChar[i]);
        
//            nLength += 2;
        
//        }
        
//        else {
        
//            sb.Append(stringChar[i]);
        
//            nLength = nLength + 1;
        
//        }

        
//        if (nLength > length)
        
//            break;
        
//    }

        
//    return sb.ToString();
        
//

        
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), @"[一-龥]+"))
                {
                    j 
+= 2;
                }
                
else
                {
                    j 
+= 1;
                }
                
if (j <= length)
                {
                    k 
+= 1;
                }
                
if (j >= length)
                {
                    
return temp.Substring(0, k);
                }
            }
            
return temp;
        }

        
public static string getStr(string s, int l)
        {
            
string temp = s;
            
if (Regex.Replace(temp, "[一-龥]""zz", RegexOptions.IgnoreCase).Length <= l)
            {
                
return temp;
            }
            
for (int i = temp.Length; i >= 0; i--)
            {
                temp 
= temp.Substring(0, i);
                
if (Regex.Replace(temp, "[一-龥]""zz", RegexOptions.IgnoreCase).Length <= l - 3)
                {
                    
return temp + "";
                }
            }
            
return "";
        }


        
public static string leftCut(string str_value, int str_len)
        {
            
int p_num = 0;
            
int i;
            
string New_Str_value = "";

            
if (str_value == "")
            {
                New_Str_value 
= "";
            }
            
else
            {
                
int Len_Num = str_value.Length;

                
//if (Len_Num < str_len)
                
//{
                
// str_len = Len_Num;
                
//}


                
for (i = 0; i <= Len_Num - 1; i++)
                {
                    
//str_value.Substring(i,1);
                    if (i > Len_Num) break;
                    
char c = Convert.ToChar(str_value.Substring(i, 1));
                    
if (((int)c > 255|| ((int)c < 0))
                    {
                        p_num 
= p_num + 2;

                    }
                    
else
                    {
                        p_num 
= p_num + 1;

                    }

                    
if (p_num >= str_len)
                    {

                        New_Str_value 
= str_value.Substring(0, i + 1);

                        
break;
                    }
                    
else
                    {
                        New_Str_value 
= str_value;
                    }

                }

            }
            
return New_Str_value;
        }

        
/// <summary>
        
/// 字符长度控制 中文 英文识别!
        
/// 注:一个汉字作为2个字符长度处理
        
/// </summary>
        
/// <param name="str">要进行切割的字符串</param>
        
/// <param name="len">返回的长度(自动识别中英文)</param>
        
/// <returns></returns>
        public static string CutString(string str, int len)
        {
            
byte[] sarr = System.Text.Encoding.Default.GetBytes(str);

            
if (sarr.Length > len)
                
return System.Text.Encoding.Default.GetString(sarr, 0, len) + "...";
            
else
                
return str;
        }

        
/// <summary>
        
/// 字符长度控制 中文 英文识别!
        
/// 注:一个汉字作为2个字符长度处理
        
/// </summary>
        
/// <param name="str">要进行切割的字符串</param>
        
/// <param name="len">返回的长度(自动识别中英文)</param>
        
/// <param name="isExt">是否输出...</param>
        
/// <returns></returns>
        public static string CutString(string str, int len, bool isExt)
        {
            
byte[] sarr = System.Text.Encoding.Default.GetBytes(str);

            
if (sarr.Length > len)
                
return System.Text.Encoding.Default.GetString(sarr, 0, len) + (isExt ? "..." : "");
            
else
                
return str;
        }
        
#endregion

        
#endregion