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

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

{

///

/// 按单字节字符串向左填充长度

///

///

///

///

///

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;//计算得到该字符串对应单字节字符串的长度

}

///

/// 按单字节字符串向右填充长度

///

///

///

///

///

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");

测试效果图

43c7bb76cddb3c29cff8537aa32e5ac5.png

下面是正常的用法

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的资料请关注其它相关文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值