String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰

Posted 天道酬勤!!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰相关的知识,希望对你有一定的参考价值。

 /// <summary>  
        /// 按单字节字符串向左填充长度  
        /// </summary>  
        /// <param name="input"></param>  
        /// <param name="length"></param>  
        /// <param name="paddingChar"></param>  
        /// <returns></returns>  
        public static string PadLeft2(this string input, int length, char paddingChar = \0)
        {
            return Pad(input, length, paddingChar, true);
        }
        /// <summary>  
        /// 按单字节字符串向右填充长度  
        /// </summary>  
        /// <param name="input">输入字符串</param>  
        /// <param name="length">单字节长度</param>  
        /// <param name="paddingChar">补位字符</param>  
        /// <returns></returns>   
        public static string PadRight2(this string input, int length, char paddingChar = \0)
        {
            return Pad( input,  length, paddingChar, false);
        }

        private static string Pad(string input, int length, char paddingChar,bool isLeft)
        {
            var isDoubleChar = Regex.IsMatch(paddingChar.ToString(), @"[^\x00-\xff]");
            var singleLength = Regex.Replace(input, @"[^\x00-\xff]", "aa").Length;
            var num = (length - singleLength) *1.0/(isDoubleChar?2:1);
            var newStr=new string(paddingChar,(int)num);
            if (isLeft)
            {
                input = newStr + input;
            }
            else
            {
                 input = input + newStr;
            }
            return input;
        }

 

以上是关于String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰的主要内容,如果未能解决你的问题,请参考以下文章

使用任意字符串向左或向右填充 string.format(不是 padleft 或 padright)

Convert PadLeft Bit Operate

C# String 前面不足位数补零的方法

C# String 前面不足位数补零的方法

360浏览器中有啥好用的获取视频的扩展程序吗

教你一招让你在机房成为最亮的仔(Java中的Swing编程初级应用)