JavaScriptを有効にしてください

C#のstring型で文字列を扱う

 ·   3 min read

はじめに

C#ではstring型を使って文字列を扱うことができる。 本記事ではstringオブジェクトのプロパティとメソッド、および文字列と数値の変換についてまとめた。
対象とする環境は以下の通り。

  • Visual Studio Community 2019 (Version 16.6.2)
  • C# Version 8.0

string型の基本

C#におけるstring型は、System.Stringクラスのエイリアス(別名)である。
したがって、下の2行のコードは等価である。

1
2
string str = "hoge";
System.String str = "hoge"; // 上と等価

文字列の宣言

文字列型の変数は、ダブルクォーテーション"で囲んで宣言する。文字列には改行\nのようなエスケープシーケンスを含めることができる。

1
2
string str = "hoge\npiyo"
Console.WriteLine(str);

出力

1
2
hoge
piyo

また、記述したままの状態を文字列として扱いたい場合は、先頭に@を付けた逐語的文字列リテラルとする。
例えば、ファイルパスなどのように\を含む文字列に対して、通常の文字列ではエスケープシーケンスを使って\\\と記述する必要がある。
一方、逐語的文字列リテラルでは、\のままパスとして解釈される。

1
2
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)メソッドでは、strAstrBをアルファベット順に比較して以下の結果を返す。

文字列の順序 CompareToの戻り値
strAstrBより先に来る -1
strAstrBが等しい 0
strAstrBより後に来る 1

1
2
3
4
5
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を指定しない場合は、最後の文字まで削除する。

1
2
3
string str = "hogepiyo";
Console.WriteLine(str.Remove(4)); // hoge
Console.WriteLine(str.Remove(4, 2)); // hogeyo

文字列の結合

文字列を結合するには、以下の方法がある。

  • +, +=演算子
  • String.Concat()メソッド
  • String.Joint()メソッド

ただし、string型では一度作成したオブジェクトは変更することは出来ないため、文字列を結合すると、新たなstringオブジェクトが作成されることになる。
何度も文字列の変更を繰り返す場合には、StringBuilderクラスを使った方が効率が良い。

文字列と数値の変換

文字列を数値に変換する場合はParse()メソッドを用いる。

1
2
int a = int.Parse("123");
float b = float.Parse("3.14");

反対に、数値を文字列に変換する場合はToString()メソッドを用いる。文字列にするときの書式を指定することが可能。

1
2
3
4
5
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(指数表示)

参考

文字列 - C# プログラミング ガイド | Microsoft Docs

シェアする

Helve
WRITTEN BY
Helve
関西在住、電機メーカ勤務のエンジニア。Twitterで新着記事を配信中です