2011-11-20 240 views
1

我有一個長度爲100的字符串;如何在固定長度字符串中對齊字符串

我需要在文本中使用空白字符「Hello」。

我該怎麼辦?

謝謝。

+0

其實我找到了我想要的(但在java中)http://stackoverflow.com/questions/8154366/how-to-center-a-string-using-string-format –

+0

看看http:// www .csharp-examples.net/align-string-with-spaces/ –

+0

@ Yoann.B看看這裏http://stackoverflow.com/questions/644017/net-format-a-string-with-fixed-spaces我希望它會幫助你.. –

回答

7

您可以使用字符串padding methods和一個小比賽calcualte中心位置:

var stringToCenter = "hello"; 
var totalLength = 100; 

var centeredString = 
    stringToCenter.PadLeft(((totalLength - stringToCenter.Length)/2) 
          + stringToCenter.Length) 
        .PadRight(totalLength); 

您可以將此邏輯轉換爲擴展方法:

public static class StringExtensions{ 

    public static string CenterString(this string stringToCenter, int totalLength) 
    { 
     return stringToCenter.PadLeft(((totalLength - stringToCenter.Length)/2) 
          + stringToCenter.Length) 
        .PadRight(totalLength); 
    } 
} 

而且你可以用它喜歡

var centeredString = "hello".CenterString(100); 

演示.NETFiddle.

+0

如果((totalLength - stringToCenter.Length)/ 2)= 34.33或其他非整數值會發生什麼? – Tim

+0

它不會發生(totalLength - stringToCenter.Length)/ 2將做整數除法,所以結果將永遠是整數。 – nemesv

+0

我不知道(只是自己試了一下)。很高興知道。謝謝。 – Tim

0

可以計算串lenght然後採取適當的填充:

"".PadLeft()"".PadRight()

4

我會加入這個爲@ nemesv的答案評論,但我缺乏信譽的堆棧溢出阻止它。

該答案中的代碼會導致在左側添加更多的填充。例如,在該答案的代碼中,hello中的「h」出現在第43位而不是第48位。

這個修改後的代碼平衡了填充。

var stringToCenter = "hello"; 
var stringToCenterLength = stringToCenter.Length; 
var totalLength = 100; 

var centeredString = stringToCenter.PadLeft(((totalLength - stringToCenterLength)/2) + stringToCenterLength).PadRight(totalLength); 
+0

如果你想要真正的中心,這確實是正確的答案。 – Rippo

+0

完美答案!!! – Sagar

0

我已經擴大了@ nemesv的回答包含超載接受填充字符,所以你可以得到的東西,如:

################################# Hello World! ################################# 

代碼:

using System; 

public class Program 
{ 
    public void Main() 
    { 
     Console.WriteLine(" Hello World! ".CenterString(80, '#')); 
    } 
} 

public static class StringExtensions 
{ 
    public static string CenterString(this string stringToCenter, int totalLength) 
    { 
     return stringToCenter.PadLeft(
      ((totalLength - stringToCenter.Length)/2) 
      + stringToCenter.Length).PadRight(totalLength); 
    } 

    public static string CenterString(this string stringToCenter, 
              int totalLength, 
              char paddingCharacter) 
    { 
     return stringToCenter.PadLeft(
      ((totalLength - stringToCenter.Length)/2) + stringToCenter.Length, 
      paddingCharacter).PadRight(totalLength, paddingCharacter); 
    } 
} 

例如:.NETFiddle

相關問題