練習 - 探索填補及對齊
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 個字元。
刪除或使用行註解運算子
//
,將上一個練習中的所有程式碼標記為註解。在 Visual Studio Code 編輯器更新您的程式碼,如下所示:
string input = "Pad this"; Console.WriteLine(input.PadLeft(12));
在 Visual Studio Code 的 [檔案] 功能表上,選取 [儲存]。 在建置或執行程式碼之前,先儲存 Program.cs 檔案。
在 [總管] 面板中,若要在 TestProject 資料夾位置開啟 [終端],請以滑鼠右鍵按一下 [TestProject],然後選取 [在整合式終端機中開啟]。 終端窗格應開啟,且應包含命令提示字元,顯示已對 TestProject 資料夾位置開啟終端。
在終端命令提示字元中,若要執行程式碼,請輸入 dotnet run,然後按 Enter 鍵。
注意
如果您看到訊息指出「找不到要執行的專案」,請確定終端命令提示字元會顯示預期的 TestProject 資料夾位置。 例如:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
當您執行程式碼時,您會看到字串左邊有四個前置字元,使得長度變成 12 個字元長。
Pad this
若要在字串的右側新增空格或字元,請改為使用
PadRight()
方法。 1. 在 Visual Studio Code 編輯器更新您的程式碼,如下所示:Console.WriteLine(input.PadRight(12));
儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您不會看到系統在字串結尾新增任何字元,但該處確實有字元。
什麼是多載方法?
在 C# 中,「多載方法」是具有不同或額外引數的另一個方法版本,這些引數會稍微修改方法的功能,這與 PadLeft()
方法的多載版本相同。
您也可以呼叫方法的第二個「多載」版本,並傳入您想要取代空格使用的字元。 在此案例中,您將會以破折號字元填滿額外空間。
刪除或使用行註解運算子
//
,將上一個步驟中的所有程式碼標記為註解。在 Visual Studio Code 編輯器更新您的程式碼,如下所示:
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));
儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看到系統在字串左邊加上四個破折號,因此字串長度是 12 個字元。
----Pad this Pad this----
現在,將此新發現的知識套用至另一個真實世界案例。
使用填補字串
假設您為一家仍支援傳統大型主機系統的付款處理公司工作。 通常,那些系統要求必須在特定資料行輸入資料。 例如,付款識別碼儲存在資料行 1 到 6、付款者姓名應該儲存在資料行 7 到 30,而付款金額應該儲存在資料行 31 到 40。 此外,重要的是,付款金額是靠右對齊。
您被要求建置一個應用程式,將關聯性資料庫管理系統中的資料轉換為舊版檔案格式。 為了確保整合能夠正常運作,第一個步驟是透過為舊版系統維護程式提供輸出範例,以確認檔案格式。 之後,您會建置此工作,以透過 ASCII 文字檔來傳送數百或數千個要處理的付款。
將付款識別碼新增至輸出
若要著手進行,請列印出前六個資料行中的付款識別碼。 您將會挑選部分隨機付款資料,這應該足以滿足您的目的。
刪除或使用行註解運算子
//
,將上一個步驟中的所有程式碼標記為註解。在 Visual Studio Code 編輯器更新您的程式碼,如下所示:
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);
重複使用
formattedLine
變數來建置輸出字串。儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看見下列輸出:
769C
右側有兩個空格,但不會顯示。 您將會在下一個步驟中確認這些空格的存在。
將付款者姓名新增至輸出
接著,您將會新增虛構的付款者姓名,並適當地進行填補。
在 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);
儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看見下列輸出:
769C Mr. Stephen Ortega
同樣地,付款者姓名後面有一些空格。 此外,步驟 1 的付款識別碼後有兩個空格。
將付款金額新增至輸出
接下來,新增虛構的付款金額,並務必使用 PadLeft()
將輸出靠右對齊。
在 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);
儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看見下列輸出:
769C Mr. Stephen Ortega $5,000.00
此輸出非常接您所了解的舊版系統維護程式在尋找的內容。
在輸出上方加上一行數字,以更輕鬆地確認結果
因為難以計算出現每個資料元素的確切資料行數目,所以您會在輸出的上方加上一行,協助您計算資料行。
Console.WriteLine("1234567890123456789012345678901234567890");
在 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);
儲存您的程式碼檔案,然後使用 Visual Studio Code 來執行程式碼。 您應該會看到下列輸出,您可以傳送該輸出到舊版系統維護程式以確認新整合會正確運作:
1234567890123456789012345678901234567890 769C Mr. Stephen Ortega $5,000.00
成功!
概括回顧
此單元有幾個重點。
string
資料類型、常值字串與類型為字串的變數都實作許多協助程式方法,以便針對字串執行格式設定、修改與其他作業。PadLeft()
與PadRight()
方法會將空白字元 (或選擇性的其他字元) 新增至字串的總長度。- 使用
PadLeft()
以將字串靠右對齊。 - 有些方法會多載,這表示它們有多種版本的方法,其中有會影響其功能的不同引數。
+=
運算子會將右邊的新字串串連至左邊的現有字串。