c# String扩展 让你在PadLeft和PadRight时不再受单双字节问题困扰
程序员文章站
2023-10-31 09:51:52
c# 中 padleft ,padright的用法简单来说就是给字符串实现补位。如:string.padleft(5,'0'); 表示检查字符串长度是否少于5位,若少于5位,则自动在其左侧以'0'补足...
c# 中 padleft ,padright的用法
简单来说就是给字符串实现补位。
如:string.padleft(5,'0'); 表示检查字符串长度是否少于5位,若少于5位,则自动在其左侧以'0'补足。
同理padright是在右侧实现补位。
补位
string str = "10";
str.padleft(5,'0')
输出:00010
str.padright(5, '0')
输出:10000
因为在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");
测试效果图
下面是正常的用法
c# 中 padleft和padright 的用法
在 c# 中可以对字符串使用 padleft 和 padright 进行轻松地补位。
padleft(int totalwidth, char paddingchar) //在字符串左边用 paddingchar 补足 totalwidth 长度
padright(int totalwidth, char paddingchar) //在字符串右边用 paddingchar 补足 totalwidth 长度
示例:
1.假如想输出aaaaa,可以用string.empty.padleft(5,'a');
2.假如想输出:
*
**
***
****
可以用padleft实现:
for(int i=1;i<=4;i++) { console.writeline(string.empty.padleft(i,'*')); }
以上就是c# string扩展 让你在padleft和padright时不再受单双字节问题困扰的详细内容,更多关于c# padleft和padright的资料请关注其它相关文章!