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