演習 - パディングと配置を見つける
- 12 分
string.Format() メソッドは、次の例のような複合書式を実行するために使用されます。
string first = "Hello";
string second = "World";
string result = string.Format("{0} {1}!", first, second);
Console.WriteLine(result);
データ型を表すキーワードに、 Console クラスでメソッドを呼び出すのと同じ方法で呼び出すことができるメソッドが含まれているのは、少し奇妙に思えたかもしれません。 実際には、 string データ型とリテラル文字列または文字列型の変数には、同様のメソッドが多数あります。
これらの組み込みメソッドのカテゴリの簡単な一覧を次に示します。これにより、何が可能かを把握できます。
- 書式設定のために空白文字を追加するメソッド (
PadLeft()、PadRight()) - 2 つの文字列を比較するメソッド、または比較を容易にするメソッド (
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>コードを実行すると、文字列の左側にプレフィックスが付いた 4 文字の長さが 12 文字に設定されます。
Pad this文字列の右側にスペースまたは文字を追加するには、代わりに
PadRight()メソッドを使用します。 1. Visual Studio Code エディターで次のようにコードを更新してください。Console.WriteLine(input.PadRight(12));コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。 文字列の末尾に追加された文字は観察されませんが、そこにあります。
オーバーロードされたメソッドとは何ですか?
C# では、 オーバーロードされたメソッド は、 PadLeft() メソッドのオーバーロードされたバージョンの場合と同様に、メソッドの機能を少し変更する異なる引数または追加の引数を持つメソッドの別のバージョンです。
メソッドの 2 つ目の オーバーロードされた バージョンを呼び出し、スペースの代わりに使用する任意の文字を渡すこともできます。 この場合は、余分なスペースにダッシュ文字を入力します。
前の手順のすべてのコードをコメント アウトするには、行コメント演算子
//を削除するか、使用します。Visual Studio Code エディターで次のようにコードを更新してください。
Console.WriteLine(input.PadLeft(12, '-')); Console.WriteLine(input.PadRight(12, '-'));コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。 あなたは、長さが12文字の文字列の先頭に4つのダッシュが付いているのを見るべきです。
----Pad this Pad this----
次に、この新しい知識を別の実際のシナリオに適用します。
パディングされた文字列の操作
あなたは、従来のメインフレーム システムをまだサポートしている支払い処理会社で働いているとします。 多くの場合、これらのシステムでは、特定の列にデータを入力する必要があります。 たとえば、支払 ID は列 1 から 6、支払い先の名前は列 7 から 30、支払額は列 31 から 40 に格納します。 また、重要なのは、支払い額が右揃えであることです。
リレーショナル データベース管理システムのデータを従来のファイル形式に変換するアプリケーションを構築するように求められます。 統合が正しく機能することを確認するには、最初の手順として、レガシ システムの保守担当者に出力のサンプルを提供して、ファイル形式を確認します。 その後、この作業に基づいて、ASCII テキスト ファイルを介して処理される数百または数千の支払いを送信します。
支払い ID を出力に追加する
開始するには、最初の 6 つの列に支払い ID を出力します。 目的に適したランダムな支払いデータを選択します。
前の手順のすべてのコードをコメント アウトするには、行コメント演算子
//を削除するか、使用します。Visual Studio Code エディターで次のようにコードを更新してください。
string paymentId = "769C"; var formattedLine = paymentId.PadRight(6); Console.WriteLine(formattedLine);formattedLine変数を再利用して、出力文字列を作成します。コード ファイルを保存してから、Visual Studio Code を使ってコードを実行してください。 次の出力が表示されます。
769C
右側には、表示されない空白が 2 つあります。 次の手順で、それらが存在することを確認します。
支払い先の名前を出力に追加する
次に、架空の受取人の名前を追加し、適切にパディングを指定します。
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
繰り返しますが、Payee の名前の後に空白文字が非常に多く含まれます。 また、手順 1 の支払 ID の後に 2 つの空白スペースがあります。
出力に支払金額を追加する
次に、架空の支払金額を追加し、 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()を使用して文字列を右揃えします。 - 一部のメソッドはオーバーロードされています。つまり、機能に影響を与える引数が異なる複数のバージョンのメソッドがあります。
-
+=演算子は、右側の新しい文字列を左側の既存の文字列に連結します。