はじめに #
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(指数表示)