簡體   English   中英

如何使用string.Format()函數在C#中對齊字符串?

[英]How to align strings in C# using string.Format() function?

輸出到word文檔(docx)。

我想使用C#4.0 string.Format來做這樣的outuput:

string1: stringValue1,  string2:stringValue2
string4: stringValue4,  string5:stringValue5
string6: stringValue6,  string7:stringValue7
string8: stringValue8,  string9:stringValue9

我正在使用string.Format("{0,-10} {1,-10}",string1,string2)但它什么也沒做。 有沒有辦法如何使用string.Format()對齊字符串? 我看到'\\ t'解決方案,但如何將其添加到string.Fornmat()?

這是我的代碼和輸出:

string titel = HttpUtility.HtmlEncode(docItem.Title);
                    string href = docItem.FullURL;
                    string title = string.Format("{0}", titel);
                    string author = docItem.Author;
                    string date = docItem.ChangedDate.Date.ToShortDateString();
                    CreateTextBoxConentParagraph(doc, string.Format("Title: <a href='{0}'>{1}</a> Author: {2} Geändert an: {3}",href,title.PadRight(20),author.PadRight(20), date),string.Format("chunkId_{0}", i++));

輸出:標題:作者:aaaGeändertan:19.04.2013

標題:第二作者:aaaGeändert和:2013年4月18日

標題:slika作者:aaaGeändertan:18.04.2013

標題:dm作者:aaaGeändertan:18.04.2013

標題:Mathias作者:aaaGeändertan:19.04.2013

標題:QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQqq作者:aaaGeändertan:19.04.2013

嘗試使用PadLeftPadRight方法。 例如:

string.Format("{0} {1}",string1.PadRight(25),string2.PadRight(25)) 

您還可以使用角色填充空格。 來自MSDN

string str = "forty-two";
char pad = '.';
Console.WriteLine(str.PadRight(15, pad));    // Displays "forty-two......".
Console.WriteLine(str.PadRight(2,  pad));    // Displays "forty-two".

格式化這樣的值工作正常,但您需要指定一個長度超過字符串值的長度,否則它將不會添加任何空格。

但是,如果您想在值之后使用逗號並在其后添加填充,則需要將逗號放入值中,然后對其進行格式化。

例:

string string1 = "asdf";
string string2 = "ffs";
string string3 = "What about me?";
string string4 = "gahah";
string string5 = "kjshdfkjh";
string string6 = "fg";
string string7 = "kkkdd";
string string8 = "asdasdf";
string string9 = "jjfjj";

Console.WriteLine(String.Format("string1: {0,-10} string2: {1,-10}", string1 + ",", string2));
Console.WriteLine(String.Format("string4: {0,-10} string5: {1,-10}", string4 + ",", string5));
Console.WriteLine(String.Format("string6: {0,-10} string7: {1,-10}", string6 + ",", string7));
Console.WriteLine(String.Format("string8: {0,-10} string9: {1,-10}", string8 + ",", string9));

輸出:

string1: asdf,      string2: ffs
string4: gahah,     string5: kjshdfkjh
string6: fg,        string7: kkkdd
string8: asdasdf,   string9: jjfjj

以下示例的導入部分是

String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n",
                                      "City", "Year", "Population", "Change (%)")

請查看以下MSDN示例

public static void Main()
    {
        // Create array of 5-tuples with population data for three U.S. cities, 1940-1950.
        Tuple<string, DateTime, int, DateTime, int>[] cities = 
      { Tuple.Create("Los Angeles", new DateTime(1940, 1, 1), 1504277, 
                     new DateTime(1950, 1, 1), 1970358),
        Tuple.Create("New York", new DateTime(1940, 1, 1), 7454995, 
                     new DateTime(1950, 1, 1), 7891957),  
        Tuple.Create("Chicago", new DateTime(1940, 1, 1), 3396808, 
                     new DateTime(1950, 1, 1), 3620962),  
        Tuple.Create("Detroit", new DateTime(1940, 1, 1), 1623452, 
                     new DateTime(1950, 1, 1), 1849568) };

        // Display header 
        string header = String.Format("{0,-12}{1,8}{2,12}{1,8}{2,12}{3,14}\n",
                                      "City", "Year", "Population", "Change (%)");
        Console.WriteLine(header);
        string output;
        foreach (var city in cities)
        {
            output = String.Format("{0,-12}{1,8:yyyy}{2,12:N0}{3,8:yyyy}{4,12:N0}{5,14:P1}",
                                   city.Item1, city.Item2, city.Item3, city.Item4, city.Item5,
                                   (city.Item5 - city.Item3) / (double)city.Item3);
            Console.WriteLine(output);
        }
    }

如果您要寫入DOCX格式,則應使用Office Open XML格式 (另請參閱此處了解更多詳情 。)

然后,要以表格格式對齊數據,應將表格插入文檔,並使用所需數據填充表格。

下面是一些示例代碼 ,演示如何以編程方式將表插入DOCX文件。

您應該能夠隱藏表格的邊框,以便只留下表格單元格中的文本可見。

你可以看到第二個代碼示例http://msdn.microsoft.com/en-us/library/system.string.format.aspx

我也習慣使用padLeft和padRight方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM