はじめに #
C#ではstring型を使って文字列を扱うことができる。 本記事ではstringオブジェクトのプロパティとメソッド、および文字列と数値の変換についてまとめた。 対象とする環境は以下の通り。
- Visual Studio Community 2019 (Version 16.6.2)
 - C# Version 8.0
 
string型の基本 #
C#におけるstring型は、System.Stringクラスのエイリアス(別名)である。 したがって、下の2行のコードは等価である。
string str = "hoge";
System.String str = "hoge"; // 上と等価
文字列の宣言 #
文字列型の変数は、ダブルクォーテーション"で囲んで宣言する。文字列には改行\nのようなエスケープシーケンスを含めることができる。
string str = "hoge\npiyo"
Console.WriteLine(str);
出力
hoge
piyo
また、記述したままの状態を文字列として扱いたい場合は、先頭に@を付けた逐語的文字列リテラルとする。
例えば、ファイルパスなどのように\を含む文字列に対して、通常の文字列ではエスケープシーケンスを使って\を\\と記述する必要がある。
一方、逐語的文字列リテラルでは、\のままパスとして解釈される。
string path1 = @"C:\Users\\user\Documents"; // 逐語的文字列リテラルを使う場合
string path2 = "C:\\Users\\user\\Documents"; // 逐語的文字列リテラルを使わない場合
string型のプロパティとメソッド #
string型のプロパティは以下の通り。
| プロパティ | 戻り値の型 | 説明 | 
|---|---|---|
| Length | int | 文字列の長さ | 
string型の主なメソッドは以下の通り。
| プロパティ | 戻り値の型 | 説明 | 
|---|---|---|
| CompareTo(string) | int | 文字列を比較 | 
| Contains(string) | bool | 文字列を含むか判定 | 
| Remove(int[, int]) | string | 指定した位置の文字を削除 | 
| Replace(string, string) | string | 指定した文字を置換 | 
| Split(string) | string[] | 指定した文字列で分割 | 
| ToLower() | string | 全て小文字にする | 
| ToUpper() | string | 全て大文字にする | 
| Trim() | string | 文字列の先頭と末尾の半角空白を削除 | 
| TrimStart() | string | 文字列の先頭の半角空白を削除 | 
| TrimEnd() | string | 文字列の末尾の半角空白を削除 | 
CompareTo()メソッドとRemove()メソッドについて、以下で詳細を述べる。
文字列の比較(CompareTo) #
strA.CompareTo(string strB)メソッドでは、strAとstrBをアルファベット順に比較して以下の結果を返す。
| 文字列の順序 | CompareToの戻り値 | 
|---|---|
strAがstrBより先に来る | 
          -1 | 
strAとstrBが等しい | 
          0 | 
strAがstrBより後に来る | 
          1 | 
例
string str = "abc";
Console.WriteLine(str.CompareTo("b"));   // -1
Console.WriteLine(str.CompareTo("abc")); // 0
Console.WriteLine(str.CompareTo("aaa")); // 1
Console.WriteLine(str.CompareTo("ABC")); // -1
なお、大文字は小文字より先に来ると判定される。
文字列の削除(Remove) #
Remove(int startIndex, int count)メソッドでは、startIndexで指定した位置からcountの数だけ文字を削除する。countを指定しない場合は、最後の文字まで削除する。
string str = "hogepiyo";
Console.WriteLine(str.Remove(4)); // hoge
Console.WriteLine(str.Remove(4, 2)); // hogeyo
文字列の結合 #
文字列を結合するには、以下の方法がある。
+,+=演算子String.Concat()メソッドString.Joint()メソッド
ただし、string型では一度作成したオブジェクトは変更することは出来ないため、文字列を結合すると、新たなstringオブジェクトが作成されることになる。 何度も文字列の変更を繰り返す場合には、StringBuilderクラスを使った方が効率が良い。
文字列と数値の変換 #
文字列を数値に変換する場合はParse()メソッドを用いる。
int a = int.Parse("123");
float b = float.Parse("3.14");
反対に、数値を文字列に変換する場合はToString()メソッドを用いる。文字列にするときの書式を指定することが可能。
double x = 123.45;
Console.WriteLine(x.ToString()); // 123.45
Console.WriteLine(x.ToString("0000.0000")); // 0123.4500(0埋め)
Console.WriteLine(x.ToString("F1")); // 123.5(小数点以下1桁)
Console.WriteLine(x.ToString("E")); // 1.234500E+002(指数表示)