メインコンテンツへスキップ

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

·1390 文字·3 分
目次

はじめに
#

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

文字列の順序 CompareToの戻り値
strAstrBより先に来る -1
strAstrBが等しい 0
strAstrBより後に来る 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(指数表示)

参考
#

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

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

Pythonプログラマから見たC#
·2854 文字·6 分
普段はPythonを使っているが、C#を勉強することになったので、Pythonプログラマから見た相違点を備忘録として残す。
PandasのTimestampでタイムゾーンを扱う
·1568 文字·4 分
PandasのTimestampオブジェクトにタイムゾーンを設定する方法や、異なるタイムゾーンに変換する方法について述べる。
PandasのTimestampで時刻を扱う
·2140 文字·5 分
PandasのTimestampを使った時刻の生成や、時刻オブジェクトからの属性の取得、任意形式の文字列での出力について述べる。
辞書内包表記でPandasのSeries, DataFrameを作成
·1056 文字·3 分
辞書内包表記を使って、PandasのSeries, DataFrameを少ないコード量で作成する。
Pythonのデコレータで関数に処理を追加する
·1104 文字·3 分
Pythonで関数の前後に処理を追加する、デコレータと呼ばれる機能について簡単にまとめた。
Pythonとseleniumを使ったブラウザ操作自動化
·2605 文字·6 分
ウェブUIのテストツールであるseleniumを使った、ブラウザ操作の自動化についてまとめた。