C#では、文字列を操作するアプリケーションを作成する際、文字列を操作する手段が多く用意されているので、多少、簡単になると思われます。
stringクラス
msdnの情報:String クラス
C#は、文字列は、オブジェクトとして扱われます。つまり、string型は、参照型です。文字列を扱うために、C#では、アルファベットを扱うことができるchar型の変数も存在しますが、日本語が扱えないため、ほぼ使いません。
C#のstringと.NET FreameworkのStringは、同じものです。Stringクラスは、sealedクラスで宣言されているため、派生型を作成することはできません。
実装するインターフェイス
Stringクラスには、以下のインターフェイスが実装されています。
- IComparable
- IComparable
- ICloneable
- IConvertable
- IEnumerable
- IEnumerable
- IEquatable
文字列を作成する
stringクラスは、文字単体だけでなく、文字列を格納することができます。
stringクラスに、文字列を設定するには、通常、文字列リテラルを使用します。文字列リテラルとは、複数の文字で構成される文字列をダブルクオート(")で囲んだ文字列のことです。
string str = "C# strings are power are powerful.");
stringクラスの変数strは、参照型です。stringオブジェクトである文字列リテラルへの参照が代入されます。
char[] char = {'t', 'e', 's', 't'};
string str = new string(chrs);
半角の英数字は、強制的にchar型として処理されます。stringクラスで扱いたいときは、キャストする必要があります。
Convert.ToString(char型変数)
文字列リテラルは、エスケープ文字を使うことができます。C#のエスケープ文字は、バックスラッシュ(\)、日本語環境では円マーク(¥)で始まる文字を示します。改行やタブを表現します。
エスケープ シーケンス | 表現 |
---|---|
\a | ベル (警告) |
\b | Backspace |
\f | フォーム フィード |
\n | 改行 |
\r | キャリッジ リターン |
\t | 水平タブ |
\v | 垂直タブ |
\' | 単一引用符 |
\" | 二重引用符 |
\\ | 円記号 |
\? | リテラル疑問符 |
\ ooo | 8 進表記の ASCII 文字 |
\x hh | 16 進表記の ASCII 文字 |
\x hhhh | このエスケープ シーケンスがワイド文字定数または Unicode 文字列リテラルで使用されている場合は、16 進表記の Unicode 文字。 たとえば、WCHAR f = L'\x4e00' または WCHAR b[] = L"The Chinese character for one is \x4e00" のようにします。 |
msdnの情報:エスケープ シーケンス
文字列を作成するには、文字列リテラルだけでなく、逐語的文字列リテラル(verbatim string literals)を使用することができます。文字列を「@"」と「"」で囲みます。エスケープ文字も改行も含めてそのままの内容を文字列にします。ただ、ダブルクオート(")は、勝手に文字列の終端を判断されないように、ダブルクオートを2つ並べて("")エスケープする必要があります。 逐語的文字列リテラルは、バスを含んだファイル名を指定する際に便利です
ToStringメソッド
よく使う文字列を作成するための方法の1つに、ToStringメソッドがあります。ほとんどのクラスに用意されています。自分でクラスを作成する際には実装しておいたほうが良いメソッドの1つです。数値などの値を文字列に変換してstring型の値として返します。
文字列を操作するメソッド
Stringクラスには、文字列を操作するための様々メソッドが用意されています。必要になった時点で調べて使い方を学んでいきましょう。
StringBuilder クラス
msdnの情報:StringBuilder クラス
String クラスに格納された文字列を変更する場合、変更した文字列に参照を切り替えます。その為、元のオブジェクトは、ガーベージコレクションで回収されるまで、メモリ内に残ります。長い文字列を頻繁に変更される作業では、Stringクラスを使うと効率が悪いため、頻繁に変更する文字列を扱う場合は、StringBuilder クラスを使用したほうが良いと言われています。