練習 - 探索填補及對齊

已完成

string.Format() 方法可用來執行複合格式設定,如範例所示:

string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);

您可以使用與呼叫 Console 類別上之方法的相同方式,呼叫代表方法所屬資料類型的關鍵字,看起來可能有點奇怪。 事實上,在 string 資料類型及任何常值字串或類型為字串的變數上,都有著許多類似的方法。

以下是這些內建方法類別的簡短清單,讓您可以大致了解可能的情況。

  • 會新增空格以調整格式的方法 (PadLeft()PadRight())
  • 會比較兩個字串或協助比較的方法 (Trim()TrimStart()TrimEnd()GetHashcode()Length 屬性)
  • 可協助您判斷字串內之項目或甚至只擷取字串之一部分的方法 (Contains()StartsWith()EndsWith()Substring())
  • 透過取代、插入或移除部分而變更字串內容的方法 (Replace()Insert()Remove())
  • 將字串轉換為字串或字元陣列的方法 (Split()ToCharArray())

透過在前後加入空格以設定字串格式

PadLeft() 方法將會在字串左側新增空格,使字元總數等於傳送到字串中的引數。 在此案例中,您要將字串的總長度設為 12 個字元。

  1. 刪除或使用行註解運算子 //,將上一個練習中的所有程式碼標記為註解。

  2. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     string input = "Pad this";
     Console.WriteLine(input.PadLeft(12));
    
  3. 在 Visual Studio Code 的 [檔案] 功能表上,選取 [儲存]。 在建置或執行程式碼之前,先儲存 Program.cs 檔案。

  4. 在 [總管] 面板中,若要在 TestProject 資料夾位置開啟 [終端],請以滑鼠右鍵按一下 [TestProject],然後選取 [在整合式終端機中開啟]。 終端窗格應開啟,且應包含命令提示字元,顯示已對 TestProject 資料夾位置開啟終端。

  5. 在終端命令提示字元中,若要執行程式碼,請輸入 dotnet run,然後按 Enter 鍵。

    注意

    如果您看到訊息指出「找不到要執行的專案」,請確定終端命令提示字元會顯示預期的 TestProject 資料夾位置。 例如:C:\Users\someuser\Desktop\csharpprojects\TestProject>

    當您執行程式碼時,您會看到字串左邊有四個前置字元,使得長度變成 12 個字元長。

     	Pad this
    
  6. 若要在字串的右側新增空格或字元,請改為使用 PadRight() 方法。 1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     Console.WriteLine(input.PadRight(12));
    
  7. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您不會看到系統在字串結尾新增任何字元,但該處確實有字元。

什麼是多載方法?

在 C# 中,「多載方法」是具有不同或額外引數的另一個方法版本,這些引數會稍微修改方法的功能,這與 PadLeft() 方法的多載版本相同。

您也可以呼叫方法的第二個「多載」版本,並傳入您想要取代空格使用的字元。 在此案例中,您將會以破折號字元填滿額外空間。

  1. 刪除或使用行註解運算子 //,將上一個步驟中的所有程式碼標記為註解。

  2. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     Console.WriteLine(input.PadLeft(12, '-'));
     Console.WriteLine(input.PadRight(12, '-'));
    
  3. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看到系統在字串左邊加上四個破折號,因此字串長度是 12 個字元。

     ----Pad this
     Pad this----
    

現在,將此新發現的知識套用至另一個真實世界案例。

使用填補字串

假設您為一家仍支援傳統大型主機系統的付款處理公司工作。 通常,那些系統要求必須在特定資料行輸入資料。 例如,付款識別碼儲存在資料行 1 到 6、付款者姓名應該儲存在資料行 7 到 30,而付款金額應該儲存在資料行 31 到 40。 此外,重要的是,付款金額是靠右對齊。

您被要求建置一個應用程式,將關聯性資料庫管理系統中的資料轉換為舊版檔案格式。 為了確保整合能夠正常運作,第一個步驟是透過為舊版系統維護程式提供輸出範例,以確認檔案格式。 之後,您會建置此工作,以透過 ASCII 文字檔來傳送數百或數千個要處理的付款。

將付款識別碼新增至輸出

若要著手進行,請列印出前六個資料行中的付款識別碼。 您將會挑選部分隨機付款資料,這應該足以滿足您的目的。

  1. 刪除或使用行註解運算子 //,將上一個步驟中的所有程式碼標記為註解。

  2. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     string paymentId = "769C";
    
     var formattedLine = paymentId.PadRight(6);
    
     Console.WriteLine(formattedLine);
    

    重複使用 formattedLine 變數來建置輸出字串。

  3. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看見下列輸出:

     769C	
    

右側有兩個空格,但不會顯示。 您將會在下一個步驟中確認這些空格的存在。

將付款者姓名新增至輸出

接著,您將會新增虛構的付款者姓名,並適當地進行填補。

  1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     string paymentId = "769C";
     string payeeName = "Mr. Stephen Ortega";
    
     var formattedLine = paymentId.PadRight(6);
     formattedLine += payeeName.PadRight(24);
    
     Console.WriteLine(formattedLine);
    

    += 運算子會執行字串串連,接受變數 formattedLine 先前的值並新增新值。 這是縮短的內容,與下列程式碼範例相等:

     formattedLine = formattedLine + payeeName.PadRight(24);
    
  2. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看見下列輸出:

     769C  Mr. Stephen Ortega
    

同樣地,付款者姓名後面有一些空格。 此外,步驟 1 的付款識別碼後有兩個空格。

將付款金額新增至輸出

接下來,新增虛構的付款金額,並務必使用 PadLeft() 將輸出靠右對齊。

  1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     string paymentId = "769C";
     string payeeName = "Mr. Stephen Ortega";
     string paymentAmount = "$5,000.00";
    
     var formattedLine = paymentId.PadRight(6);
     formattedLine += payeeName.PadRight(24);
     formattedLine += paymentAmount.PadLeft(10);
    
     Console.WriteLine(formattedLine);
    
  2. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看見下列輸出:

     769C  Mr. Stephen Ortega       $5,000.00
    

此輸出非常接您所了解的舊版系統維護程式在尋找的內容。

在輸出上方加上一行數字,以更輕鬆地確認結果

因為難以計算出現每個資料元素的確切資料行數目,所以您會在輸出的上方加上一行,協助您計算資料行。

Console.WriteLine("1234567890123456789012345678901234567890");
  1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:

     string paymentId = "769C";
     string payeeName = "Mr. Stephen Ortega";
     string paymentAmount = "$5,000.00";
    
     var formattedLine = paymentId.PadRight(6);
     formattedLine += payeeName.PadRight(24);
     formattedLine += paymentAmount.PadLeft(10);
    
     Console.WriteLine("1234567890123456789012345678901234567890");
     Console.WriteLine(formattedLine);
    
  2. 儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看到下列輸出,您可以傳送該輸出到舊版系統維護程式以確認新整合會正確運作:

     1234567890123456789012345678901234567890
     769C  Mr. Stephen Ortega       $5,000.00
    

成功!

概括回顧

此單元有幾個重點。

  • string 資料類型、常值字串與類型為字串的變數都實作許多協助程式方法,以便針對字串執行格式設定、修改與其他作業。
  • PadLeft()PadRight() 方法會將空白字元 (或選擇性的其他字元) 新增至字串的總長度。
  • 使用 PadLeft() 以將字串靠右對齊。
  • 有些方法會多載,這表示它們有多種版本的方法,其中有會影響其功能的不同引數。
  • += 運算子會將右邊的新字串串連至左邊的現有字串。

檢定您的知識

1.

假設 string myWords = "Learning C#",最適合 Console.WriteLine(myWords.PadLeft(12)); 的輸出描述為何?