String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰
来源:互联网 发布:手机怎么注销淘宝账号 编辑:程序博客网 时间:2024/05/22 10:52
因为在NET中,string的Length并不区分当前字符串包含的字符为单字节还是双字节字符,这样导致我们在通过字符串的PadLeft和PadRight方法处理一些需要排版显示的字符串时,会使得相关显示参差不齐,所以这里就有了这么一个扩展,让双字节显示占用的两个单字节宽度“吐”出来,下面是具体代码
using System.Text.RegularExpressions; public static class StringExtensions { /// <summary> /// 按单字节字符串向左填充长度 /// </summary> /// <param name="input"></param> /// <param name="length"></param> /// <param name="paddingChar"></param> /// <returns></returns> public static string PadLeftWhileDouble(this string input, int length, char paddingChar = '\0') { var singleLength = GetSingleLength(input); return input.PadLeft(length - singleLength + input.Length, paddingChar); } private static int GetSingleLength(string input) { if (string.IsNullOrEmpty(input)) { throw new ArgumentNullException(); } return Regex.Replace(input, @"[^\x00-\xff]", "aa").Length;//计算得到该字符串对应单字节字符串的长度 } /// <summary> /// 按单字节字符串向右填充长度 /// </summary> /// <param name="input"></param> /// <param name="length"></param> /// <param name="paddingChar"></param> /// <returns></returns> public static string PadRightWhileDouble(this string input, int length, char paddingChar = '\0') { var singleLength = GetSingleLength(input); return input.PadRight(length - singleLength + input.Length, paddingChar); } }测试代码如下
Console.WriteLine("123测试测试".PadRightWhileDouble(25) + "1"); Console.WriteLine("123测试测试".PadRightWhileDouble(25, 'A') + "1"); Console.WriteLine("1231212".PadRightWhileDouble(25) + "1"); Console.WriteLine("1231212".PadRightWhileDouble(25, 'A') + "1"); Console.WriteLine("123测试测试".PadLeftWhileDouble(25) + "1"); Console.WriteLine("123测试测试".PadLeftWhileDouble(25, 'A') + "1"); Console.WriteLine("1231212".PadLeftWhileDouble(25) + "1"); Console.WriteLine("1231212".PadLeftWhileDouble(25, 'A') + "1");测试效果图
2 0
- String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰
- PadLeft 和 PadRight 例子
- Java中实现String.padLeft和String.padRight
- C# string.PadLeft &&String.PadRight方法
- 让指针不再困扰你
- 让指针不再困扰你
- 让指针不再困扰你
- 让指针不再困扰你
- 让指针不再困扰你
- JS中的PadLeft、PadRight,位数不足,自动补位,String扩展方法
- C#控制台 padleft,padright在字符串前,后加入指定字符,让字符串达到指定长度
- C# 中 PadLeft和PadRight 的用法
- ASP等价于.NET里String对象的PadLeft和PadRight函数
- .Net FrameWork String.PadLeft() 、String.PadRight()、String.Substring()方法
- 让c语言指针不再困扰你
- .padLeft() and .padRight()
- Json解析,让你不再困扰(非常详细)
- 让无效按钮不再困扰
- 免安装版mysql配置
- 将装了win的mac重装回来具体步骤
- EGOTableViewPullRefresh下拉原理及代码详解
- Python标准库(1)——string
- PPT转换成视频软件(iSpring Suite)V7.0.1 X32 免费无限制版
- String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰
- Android访问/data/app/下文件方法
- Eclipse Hover 提示过快
- Android Studio 快捷键大全
- Python标准库(2)——数据结构之Counter
- CentOS 6.5 源码安装Nginx1.6.3
- 黑马程序员——异常
- ARC forbid explicit message send of 'release'
- 网易新闻使用的三房库-供开发者参考