欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾

 更新時間:2020年04月07日 13:11:53   作者:娃都會打醬油了  
這篇文章主要介紹了c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾,需要的朋友可以參考下

C# 中 PadLeft ,PadRight的用法

簡單來說就是給字符串實現(xiàn)補位。

如:String.PadLeft(5,'0'); 表示檢查字符串長度是否少于5位,若少于5位,則自動在其左側(cè)以'0'補足。

同理PadRight是在右側(cè)實現(xiàn)補位。

補位

string str = "10";

str.PadLeft(5,'0')

輸出:00010

str.PadRight(5, '0')

輸出:10000

因為在NET中,string的Length并不區(qū)分當(dāng)前字符串包含的字符為單字節(jié)還是雙字節(jié)字符,這樣導(dǎo)致我們在通過字符串的PadLeft和PadRight方法處理一些需要排版顯示的字符串時,會使得相關(guān)顯示參差不齊,所以這里就有了這么一個擴展,讓雙字節(jié)顯示占用的兩個單字節(jié)寬度“吐”出來,下面是具體代碼

  using System.Text.RegularExpressions;
  public static class StringExtensions
  {
    /// <summary>
    /// 按單字節(jié)字符串向左填充長度
    /// </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;//計算得到該字符串對應(yīng)單字節(jié)字符串的長度
    }
    /// <summary>
    /// 按單字節(jié)字符串向右填充長度
    /// </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實現(xiàn):

for(int i=1;i<=4;i++)
{
 Console.WriteLine(string.Empty.PadLeft(i,'*'));
}

以上就是c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾的詳細內(nèi)容,更多關(guān)于c# PadLeft和PadRight的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:

相關(guān)文章

最新評論