演習 - Split() と Join() を検出する
物流会社で開発作業を続けるうちに、一連の小さなアプリケーションをビルドし始めます。 組み合わされたアプリケーションによって、1 つのパートナーのシステムからデータが取得され、そのデータが変更され、必要な形式で内部システムに渡されます。
データ変換を行うには、受信データを文字列として受け取り、それを小さいデータ要素に解析してから、必要な別の形式に一致するように操作する必要があります。 文字列データをより小さいデータ要素に解析するにはどうすればよいでしょうか?
文字列データ型の Array メソッド
string
型の変数には、1 つの文字列を小さい文字列の配列または個々の文字の配列に変換する組み込みメソッドが多数あります。
他のコンピューター システムのデータを処理するとき、目的に適していない方法で書式設定またはエンコードされていることがあります。 そのような場合は、string
データ型の Array メソッドを使用し、文字列を配列として解析することができます。
ToCharArray()
を使用して、string
を反転させる
前の演習のコードをすべて削除するか、行コメント演算子
//
を使ってコメントアウトします。Visual Studio Code エディターで次のようにコードを更新します。
string value = "abc123"; char[] valueArray = value.ToCharArray();
ここでは、ToCharArray()
メソッドを使用して char
の配列を作成します。配列の各要素には、元の文字列の 1 つの文字が入ります。
順序を逆転してから、char 配列を新しい文字列に結合する
次に、配列内の文字の順序を逆にしてから、Write
メソッドを使用してそれらを 1 つの出力に結合します。
Visual Studio Code エディターで次のようにコードを更新します。
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); string result = new string(valueArray); Console.WriteLine(result);
式
new string(valueArray)
では、System.String
クラス (C# のstring
データ型と同じ) の新しい空のインスタンスが作成され、char 配列がコンストラクターとして渡されます。Note
new
キーワードとは何でしょうか?System.String
クラスと C# のstring
データ型にはどのような関連があるのでしょうか? コンストラクターとは何でしょうか? 残念なことに、これらのすばらしい質問は、このモジュールの範囲外です。 引き続き .NET クラス ライブラリおよび C# でのクラスとオブジェクトについて学習し、このコード式の背後で行われていることを完全に理解することをお勧めします。 ここでは、検索エンジンと Microsoft ドキュメントを使用して、変換を行う必要があることはわかっていても、C# での方法がわからない場合に使用できる例を見つけます。Visual Studio Code の [ファイル] メニューで、[保存] を選択します。
コードをビルドまたは実行する前に、Program.cs ファイルを保存する必要があります。
[エクスプローラー] パネルで、TestProject フォルダーの場所にあるターミナルを開くには、TestProject を右クリックし、[統合ターミナルで開く] を選択します。
ターミナル パネルが開き、ターミナルが TestProject フォルダーの場所に対して開かれていることを示すコマンド プロンプトが含まれているはずです。
コードを実行するには、ターミナルのコマンド プロンプトで、「dotnet run」と入力し、Enter キーを押します。
Note
"実行するプロジェクトが見つかりませんでした" というメッセージが表示された場合は、ターミナルのコマンド プロンプトに、予期されている TestProject フォルダーの場所が表示されていることを確かめます。 例:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
次の出力が表示されます。
321cba
Join()
を使用してすべての文字を新しいコンマ区切り値文字列に結合する
ASCII テキストとして表されるデータを操作するときによくあるように、多くの場合、コンマを使用して char 配列の各要素を区切る必要があります。 そのためには、手順 2 で追加したコード行をコメントアウトし、String
クラスの Join()
メソッドを使用して、各セグメントを区切る文字 (コンマ) と配列自体を渡します。
Visual Studio Code エディターで次のようにコードを更新します。
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result);
コード ファイルを保存してから、Visual Studio Code を使ってコードを実行します。
次の出力が表示されます。
3,2,1,c,b,a
コンマ区切り値文字列を文字列の配列に対して Split()
を実行する
コードを完成させるには、Split()
メソッドを使用します。これは、string
型の変数に対して文字列の配列を作成します。
Visual Studio Code エディターを使用して、ファイルの下部に次のコード行を追加します。
string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }
少し時間を取って前のコードを確認します。
コンマは、1 つの長い文字列をより小さい文字列に分割するために、区切り記号として
.Split()
に指定されます。 その後、このコードではforeach
ループを使用して、新しく作成された文字列の配列 (items
) の各要素を反復処理します。コードが次のように表示されるようになったことを確認します。
string value = "abc123"; char[] valueArray = value.ToCharArray(); Array.Reverse(valueArray); // string result = new string(valueArray); string result = String.Join(",", valueArray); Console.WriteLine(result); string[] items = result.Split(','); foreach (string item in items) { Console.WriteLine(item); }
コード ファイルを保存してから、Visual Studio Code を使ってコードを実行します。
このコードを実行すると、次の出力が表示されます。
3,2,1,c,b,a 3 2 1 c b a
string[] items = result.Split(',');
を使用して作成されたitems
配列はforeach
ループで使用され、value
変数に含まれる元のstring
の個々の文字が表示されます。
要点
文字列と配列を使用するときに覚えておく必要があることは次のとおりです。
- 配列を作成するには、
ToCharArray()
やSplit()
などのメソッドを使用します - 配列を 1 つの文字列に戻すには、
Join()
のようなメソッドを使用するか、char
の配列を渡して新しい文字列を作成します