zoukankan      html  css  js  c++  java
  • 字符串处理类

    public static class StringExtension
        {
            /// <summary>
            /// 分割字符串
            /// </summary>
            /// <param name="str"></param>
            /// <param name="length">分割长度,默认4</param>
            /// <param name="divide">分割字符</param>
            /// <returns></returns>
            public static string DivideString(this string str, int length = 4, string divide = " ")
            {
                StringBuilder sb = new StringBuilder();
                int count = 1;
                foreach (var c in str)
                {
                    sb.Append(c);
                    if (count++ >= length)
                        sb.Append(divide);
                }
                return sb.ToString();
            }
    
            /// <summary>
            /// 替换字符
            /// </summary>
            /// <param name="str"></param>
            /// <param name="endIndex">不包含endIndex</param>
            /// <param name="replace">替换字符</param>
            /// <param name="replaceLength">替换字符长度,默认-1表示实际个数</param>
            /// <returns></returns>
            public static string ReplaceStart(this string str, int endIndex, string replace, int replaceLength = -1)
            {
                return str.Replace(0, endIndex, replace, replaceLength);
            }
    
            /// <summary>
            /// 替换后面的字符
            /// </summary>
            /// <param name="str"></param>
            /// <param name="startIndex">包含startIndex</param>
            /// <param name="replace">替换字符</param>
            /// <param name="replaceLength">替换字符长度,默认-1表示实际个数</param>
            /// <returns></returns>
            /// <returns></returns>
            public static string ReplaceEnd(this string str, int startIndex, string replace, int replaceLength = -1)
            {
                return str.Replace(startIndex, str.Length - 1, replace, replaceLength);
            }
    
            /// <summary>
            /// 保留前面字符串
            /// </summary>
            /// <param name="str"></param>
            /// <param name="count">保留个数</param>
            /// <param name="replace">替换字符</param>
            /// <param name="replaceLength">替换个数</param>
            /// <returns></returns>
            public static string RetainStart(this string str, int count, string replace, int replaceLength = -1)
            {
                return str.ReplaceEnd(count, replace, replaceLength);
            }
    
            /// <summary>
            /// 保留后面字符串
            /// </summary>
            /// <param name="str"></param>
            /// <param name="count">保留个数</param>
            /// <param name="replace">替换字符</param>
            /// <param name="replaceLength">替换个数</param>
            /// <returns></returns>
            public static string RetainEnd(this string str, int count, string replace, int replaceLength = -1)
            {
                return str.ReplaceStart(str.Length - count, replace, replaceLength);
            }
            
            /// <summary>
            /// 替换字符
            /// </summary>
            /// <param name="str"></param>
            /// <param name="startIndex">包含startIndex</param>
            /// <param name="endIndex">不包含endIndex</param>
            /// <param name="replace">替换字符</param>
            /// <param name="replaceLength">替换字符长度,默认-1表示实际个数</param>
            /// <returns></returns>
            public static string Replace(this string str, int startIndex, int endIndex, string replace, int replaceLength = -1)
            {
                if (endIndex >= str.Length) endIndex = str.Length - 1;
                if (startIndex < 0) startIndex = 0;
                if (startIndex >= endIndex) return str;
    
                StringBuilder sb = new StringBuilder();
                sb.Append(str.Substring(0, startIndex));
    
                int count = replaceLength == -1 ? endIndex - startIndex : replaceLength;
                for (int i = 0; i < count; i++)
                    sb.Append(replace);
                sb.Append(str.Substring(endIndex));
    
                return sb.ToString();
            }
    
    
    
    
            #region 银行卡相关
    
            /// <summary>
            /// 格式化银行卡号,每4位一分割
            /// </summary>
            /// <param name="num"></param>
            /// <param name="length"></param>
            /// <returns></returns>
            public static string FormatBankCardNum(this string num, int length = 4)
            {
                return DivideString(num, length);
            }
    
            /// <summary>
            /// 保留前面count个数据,其他替换为replace
            /// </summary>
            /// <param name="num"></param>
            /// <param name="count"></param>
            /// <param name="replace"></param>
            /// <returns></returns>
            public static string RetainStartCardNum(this string num, int count, string replace)
            {
                //return RetainCardNum(num, count, num.Length, replace);
                string retainNum = num.Substring(num.Length - count);
    
                StringBuilder sb = new StringBuilder();
                int countIndex = 1;
                for (int i = 0; i < 16 - count; i++)
                {
                    sb.Insert(0, replace);
                    if (countIndex++ >= 4)
                    {
                        sb.Insert(0, ' ');
                        countIndex = 1;
                    }
                }
                string str = sb.ToString().TrimStart(' ');
                return retainNum + " " + str;
            }
    
            /// <summary>
            /// 保留后面count个数据,其他替换为replace
            /// </summary>
            /// <param name="num"></param>
            /// <param name="count"></param>
            /// <param name="replace"></param>
            /// <returns></returns>
            public static string RetainEndCardNum(this string num, int count, string replace)
            {
                //return RetainCardNum(num, 0, num.Length - count, replace);
    
                string retainNum = num.Substring(num.Length - count);
                int countIndex = 1;
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < 16 - count; i++)
                {
                    sb.Append(replace);
                    if (countIndex++ >= 4)
                    {
                        sb.Append(" ");
                        countIndex = 1;
                    }
                }
                string str = sb.ToString().TrimEnd(' ');
                return str + " " + retainNum;
            }
    
            /// <summary>
            /// 替换为*号,每四位分割一下
            /// </summary>
            /// <param name="num"></param>
            /// <param name="startIndex">包含startIndex</param>
            /// <param name="endIndex">不包含endIndex</param>
            /// <param name="replace">替换字符</param>
            /// <returns></returns>
            public static string ReplaceCardNum(this string num, int startIndex, int endIndex, string replace)
            {
                if (string.IsNullOrEmpty(num))
                {
                    return string.Empty;
                }
                StringBuilder sb = new StringBuilder();
                int count = 1;
                for (int i = 0; i < num.Length; i++)
                {
                    if (i >= startIndex && i < endIndex)
                        sb.Append(replace);
                    else
                        sb.Append(num[i]);
    
                    if (count++ >= 4)
                    {
                        sb.Append(" ");
                        count = 1;
                    }
                }
                return sb.ToString();
            }
    
            #endregion
        }
  • 相关阅读:
    排序简介
    排序集锦
    排序图解
    UVA 11809
    uva1588kickdown
    C++中输入输出的重定向
    uva1587BOX
    uva 10340 All in All
    uva 1368 DNA Consensus String
    彻底理解MapReduce shuffle过程原理
  • 原文地址:https://www.cnblogs.com/nayilvyangguang/p/13624947.html
Copyright © 2011-2022 走看看