転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

C#を勉強する15_文字列の連結と分割

次は文字列の連結と分割。文字連結といえば、+演算子

var name = "山田" + "TARO";

連結はこの+演算子でだいたい事足りるが、文字列配列の場合はJoinメソッドを使うと便利な使い方ができる。

var languages = new[] { "C", "Java", "VB", "Ruby" ,};
// 区切り文字を指定
var separator = "+";
var result = String.Join(separator, languages);
// C+Java+VB+Rubyと出力される
Console.WriteLine(result);

Joinメソッドは、指定した区切り文字で文字配列の各要素を連結したが、Splitメソッドでは指定した文字で文字列を分割することができる。

var text = "The quick brown fox jumps over the lazy dog";
// {"The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog" }が格納される
string[] words = text.Split(' ');

Splitメソッドはオーバーロードされたメソッドもあり、これを使うと複数の区切り文字を指定できる。

var text = "The quick brown fox jumps over the lazy dog.";
// 空白とピリオドを区切り文字に指定している。
// 第2引数は、空の配列要素を含めないように指定
string[] words = text.Split(new[] { ' ', '.' },StringSplitOptions.RemoveEmptyEntries);

ここまで文字列連結についてまとめてきたが、文字列は不変オブジェクトである。
以下のようなコードの場合、s1は新たな6文字分のインスタンスが作成されている。

var s1 = "ABC";
s1 = s1 + "XYZ";

毎回インスタンスを作成していたのでは非効率なため、StringBuilderクラスが用意されている。

var sb = new StringBuilder();
// 文字列を追加
sb.Append("やまだ");
sb.Append("TARO");

// やまだTAROと出力
// ToString()メソッドで、文字列に変換
Console.WriteLine(sb.ToString());