几个字符串操作方法

来源:互联网 发布:博睿软件测试 编辑:程序博客网 时间:2024/06/06 05:30
 
/// <summary>        /// 获取指定文件的扩展名 例:  .txt        /// </summary>        /// <param name="fileName">指定文件名</param>        /// <returns>扩展名</returns>        public static string GetFileExtName(string fileName)        {            if (GF_IsOk.IsStrNullOrEmpty(fileName) || fileName.IndexOf('.') <= 0)                return "";                        fileName = fileName.ToLower().Trim();                               return fileName.Substring(fileName.LastIndexOf('.'), fileName.Length - fileName.LastIndexOf('.'));        }        public static string GetSubString(string p_SrcString, int p_Length, string p_TailString)        {            return GetSubString(p_SrcString, 0, p_Length, p_TailString);        }        public static string GetUnicodeSubString(string str, int len, string p_TailString)        {            string result = string.Empty;// 最终返回的结果            int byteLen = System.Text.Encoding.Default.GetByteCount(str);// 单字节字符长度            int charLen = str.Length;// 把字符平等对待时的字符串长度            int byteCount = 0;// 记录读取进度            int pos = 0;// 记录截取位置            if (byteLen > len)            {                for (int i = 0; i < charLen; i++)                {                    if (Convert.ToInt32(str.ToCharArray()[i]) > 255)// 按中文字符计算加2                        byteCount += 2;                    else// 按英文字符计算加1                        byteCount += 1;                    if (byteCount > len)// 超出时只记下上一个有效位置                    {                        pos = i;                        break;                    }                    else if (byteCount == len)// 记下当前位置                    {                        pos = i + 1;                        break;                    }                }                if (pos >= 0)                    result = str.Substring(0, pos) + p_TailString;            }            else                result = str;            return result;        }        /// <summary>        /// 取指定长度的字符串        /// </summary>        /// <param name="p_SrcString">要检查的字符串</param>        /// <param name="p_StartIndex">起始位置</param>        /// <param name="p_Length">指定长度</param>        /// <param name="p_TailString">用于替换的字符串</param>        /// <returns>截取后的字符串</returns>        public static string GetSubString(string p_SrcString, int p_StartIndex, int p_Length, string p_TailString)        {            string myResult = p_SrcString;            Byte[] bComments = Encoding.UTF8.GetBytes(p_SrcString);            foreach (char c in Encoding.UTF8.GetChars(bComments))            {    //当是日文或韩文时(注:中文的范围:\u4e00 - \u9fa5, 日文在\u0800 - \u4e00, 韩文为\xAC00-\xD7A3)                if ((c > '\u0800' && c < '\u4e00') || (c > '\xAC00' && c < '\xD7A3'))                {                    //if (System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\u0800-\u4e00]+") || System.Text.RegularExpressions.Regex.IsMatch(p_SrcString, "[\xAC00-\xD7A3]+"))                    //当截取的起始位置超出字段串长度时                    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);                //当字符串长度大于起始位置                if (bsSrcString.Length > p_StartIndex)                {                    int p_EndIndex = bsSrcString.Length;                    //当要截取的长度在字符串的有效长度范围内                    if (bsSrcString.Length > (p_StartIndex + p_Length))                    {                        p_EndIndex = p_Length + p_StartIndex;                    }                    else                    {   //当不在有效范围内时,只取到字符串的结尾                        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>        /// 获取Email HostName 例 liyangfd@gmail.com   获取出来时@gmail.com        /// </summary>        /// <param name="strEmail"></param>        /// <returns></returns>        public static string GetEmailHostName(string strEmail)        {            if (strEmail.IndexOf("@") < 0)            {                return "";            }            return strEmail.Substring(strEmail.LastIndexOf("@")).ToLower();        }        /// <summary>        /// 返回URL中结尾的文件名        /// </summary>                public static string GetFilename(string url)        {            if (url == null)            {                return "";            }            string[] strs1 = url.Split(new char[] { '/' });            return strs1[strs1.Length - 1].Split(new char[] { '?' })[0];        }        /// <summary>        /// 根据阿拉伯数字返回月份的名称(可更改为某种语言)        /// </summary>            public static string[] Monthes        {            get            {                return new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };            }        }

 

 /// <summary>        /// 获得伪静态页码显示链接        /// </summary>        /// <param name="curPage">当前页数</param>        /// <param name="countPage">总页数</param>        /// <param name="url">超级链接地址</param>        /// <param name="extendPage">周边页码显示个数上限</param>        /// <returns>页码html</returns>        public static string GetStaticPageNumbers(int curPage, int countPage, string url, string expname, int extendPage)        {            return GetStaticPageNumbers(curPage, countPage, url, expname, extendPage, 0);        }        /// <summary>        /// 获得伪静态页码显示链接        /// </summary>        /// <param name="curPage">当前页数</param>        /// <param name="countPage">总页数</param>        /// <param name="url">超级链接地址</param>        /// <param name="extendPage">周边页码显示个数上限</param>        /// <param name="forumrewrite">当前版块是否使用URL重写</param>        /// <returns>页码html</returns>        public static string GetStaticPageNumbers(int curPage, int countPage, string url, string expname, int extendPage, int forumrewrite)        {            int startPage = 1;            int endPage = 1;            string t1 = "<a href=\"" + url + "-1" + expname + "\">«</a>";            string t2 = "<a href=\"" + url + "-" + countPage + expname + "\">»</a>";            if (forumrewrite == 1)            {                t1 = "<a href=\"" + url + "/1/list" + expname + "\">«</a>";                t2 = "<a href=\"" + url + "/" + countPage + "/list" + expname + "\">»</a>";            }            if (forumrewrite == 2)            {                t1 = "<a href=\"" + url + "/\">«</a>";                t2 = "<a href=\"" + url + "/" + countPage + "/\">»</a>";            }            if (countPage < 1) countPage = 1;            if (extendPage < 3) extendPage = 2;            if (countPage > extendPage)            {                if (curPage - (extendPage / 2) > 0)                {                    if (curPage + (extendPage / 2) < countPage)                    {                        startPage = curPage - (extendPage / 2);                        endPage = startPage + extendPage - 1;                    }                    else                    {                        endPage = countPage;                        startPage = endPage - extendPage + 1;                        t2 = "";                    }                }                else                {                    endPage = extendPage;                    t1 = "";                }            }            else            {                startPage = 1;                endPage = countPage;                t1 = "";                t2 = "";            }            StringBuilder s = new StringBuilder("");            s.Append(t1);            for (int i = startPage; i <= endPage; i++)            {                if (i == curPage)                {                    s.Append("<span>");                    s.Append(i);                    s.Append("</span>");                }                else                {                    s.Append("<a href=\"");                    if (forumrewrite == 1)                    {                        s.Append(url);                        if (i != 1)                        {                            s.Append("/");                            s.Append(i);                        }                        s.Append("/list");                        s.Append(expname);                    }                    else if (forumrewrite == 2)                    {                        s.Append(url);                        s.Append("/");                        if (i != 1)                        {                            s.Append(i);                            s.Append("/");                        }                    }                    else                    {                        s.Append(url);                        if (i != 1)                        {                            s.Append("-");                            s.Append(i);                        }                        s.Append(expname);                    }                    s.Append("\">");                    s.Append(i);                    s.Append("</a>");                }            }            s.Append(t2);            return s.ToString();        }        /// <summary>        /// 获得帖子的伪静态页码显示链接        /// </summary>        /// <param name="expname"></param>        /// <param name="countPage">总页数</param>        /// <param name="url">超级链接地址</param>        /// <param name="extendPage">周边页码显示个数上限</param>        /// <returns>页码html</returns>        public static string GetPostPageNumbers(int countPage, string url, string expname, int extendPage)        {            int startPage = 1;            int endPage = 1;            int curPage = 1;            string t1 = "<a href=\"" + url + "-1" + expname + "\">«</a>";            string t2 = "<a href=\"" + url + "-" + countPage + expname + "\">»</a>";            if (countPage < 1) countPage = 1;            if (extendPage < 3) extendPage = 2;            if (countPage > extendPage)            {                if (curPage - (extendPage / 2) > 0)                {                    if (curPage + (extendPage / 2) < countPage)                    {                        startPage = curPage - (extendPage / 2);                        endPage = startPage + extendPage - 1;                    }                    else                    {                        endPage = countPage;                        startPage = endPage - extendPage + 1;                        t2 = "";                    }                }                else                {                    endPage = extendPage;                    t1 = "";                }            }            else            {                startPage = 1;                endPage = countPage;                t1 = "";                t2 = "";            }            StringBuilder s = new StringBuilder("");            s.Append(t1);            for (int i = startPage; i <= endPage; i++)            {                s.Append("<a href=\"");                s.Append(url);                s.Append("-");                s.Append(i);                s.Append(expname);                s.Append("\">");                s.Append(i);                s.Append("</a>");            }            s.Append(t2);            return s.ToString();        }


 

/// <summary>        /// 获得页码显示链接        /// </summary>        /// <param name="curPage">当前页数</param>        /// <param name="countPage">总页数</param>        /// <param name="url">超级链接地址</param>        /// <param name="extendPage">周边页码显示个数上限</param>        /// <returns>页码html</returns>        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage)        {            return GetPageNumbers(curPage, countPage, url, extendPage, "page");        }        /// <summary>        /// 获得页码显示链接        /// </summary>        /// <param name="curPage">当前页数</param>        /// <param name="countPage">总页数</param>        /// <param name="url">超级链接地址</param>        /// <param name="extendPage">周边页码显示个数上限</param>        /// <param name="pagetag">页码标记</param>        /// <returns>页码html</returns>        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage, string pagetag)        {            return GetPageNumbers(curPage, countPage, url, extendPage, pagetag, null);        }        /// <summary>        /// 获得页码显示链接        /// </summary>        /// <param name="curPage">当前页数</param>        /// <param name="countPage">总页数</param>        /// <param name="url">超级链接地址</param>        /// <param name="extendPage">周边页码显示个数上限</param>        /// <param name="pagetag">页码标记</param>        /// <param name="anchor">锚点</param>        /// <returns>页码html</returns>        public static string GetPageNumbers(int curPage, int countPage, string url, int extendPage, string pagetag, string anchor)        {            if (pagetag == "")                pagetag = "page";            int startPage = 1;            int endPage = 1;            if (url.IndexOf("?") > 0)                url = url + "&";            else                url = url + "?";            string t1 = "<a href=\"" + url + "&" + pagetag + "=1";            string t2 = "<a href=\"" + url + "&" + pagetag + "=" + countPage;            if (anchor != null)            {                t1 += anchor;                t2 += anchor;            }            t1 += "\">«</a>";            t2 += "\">»</a>";            if (countPage < 1)                countPage = 1;            if (extendPage < 3)                extendPage = 2;            if (countPage > extendPage)            {                if (curPage - (extendPage / 2) > 0)                {                    if (curPage + (extendPage / 2) < countPage)                    {                        startPage = curPage - (extendPage / 2);                        endPage = startPage + extendPage - 1;                    }                    else                    {                        endPage = countPage;                        startPage = endPage - extendPage + 1;                        t2 = "";                    }                }                else                {                    endPage = extendPage;                    t1 = "";                }            }            else            {                startPage = 1;                endPage = countPage;                t1 = "";                t2 = "";            }            StringBuilder s = new StringBuilder("");            s.Append(t1);            for (int i = startPage; i <= endPage; i++)            {                if (i == curPage)                {                    s.Append("<span>");                    s.Append(i);                    s.Append("</span>");                }                else                {                    s.Append("<a href=\"");                    s.Append(url);                    s.Append(pagetag);                    s.Append("=");                    s.Append(i);                    if (anchor != null)                    {                        s.Append(anchor);                    }                    s.Append("\">");                    s.Append(i);                    s.Append("</a>");                }            }            s.Append(t2);            return s.ToString();        }        /// <summary>        /// 判断文件流是否为UTF8字符集        /// </summary>        /// <param name="sbInputStream">文件流</param>        /// <returns>判断结果</returns>        private static bool IsUTF8(FileStream sbInputStream)        {            int i;            byte cOctets;  // octets to go in this UTF-8 encoded character             byte chr;            bool bAllAscii = true;            long iLen = sbInputStream.Length;            cOctets = 0;            for (i = 0; i < iLen; i++)            {                chr = (byte)sbInputStream.ReadByte();                if ((chr & 0x80) != 0) bAllAscii = false;                if (cOctets == 0)                {                    if (chr >= 0x80)                    {                        do                        {                            chr <<= 1;                            cOctets++;                        }                        while ((chr & 0x80) != 0);                        cOctets--;                        if (cOctets == 0)                            return false;                    }                }                else                {                    if ((chr & 0xC0) != 0x80)                        return false;                    cOctets--;                }            }            if (cOctets > 0)                return false;            if (bAllAscii)                return false;            return true;        }



 

原创粉丝点击