■C#の文字列
C#のstringは.NETのSystem.Stringクラスと同一のため、System.Stringクラスの関数とプロパティを使うことができます。
C#の文字列はImmutableなので一度設定したら変更できません。
※一度設定したら変更できない型をImmutable Typeと言います。値を何度でも変更できる型をMutable Typeと言います。
namespace TestApplication
{
class Program
{
static void Main(string[] args)
{
// 文字列(string)型変数
string str1 = “C#”;
string str2 = “Programming Study”;
// 文字型(char)変数
char chr1 = ‘A’;
char chr2 = ‘B’;
// 文字列の結合
string str3 = str1 + “ ” + str2;
Console.WriteLine(“String: {0}”, str3);
// 文字列の切り出し
string str3substr = str3.Substring(1, 3);
Console.WriteLine(“Substring: {0}”, str3substr);
}
}
}
■C#の文字列、文字、文字の配列
C#の文字列(string)は文字(char)の集合体です。文字列の各文字は添え字(square bracket)を使って参照できます。
文字の配列を文字列に変換するためには下記のようにnew stringで配列を引数に設定します。
namespace TestApplication
{
class Program
{
static void Main(string[] args)
{
string str = “My Test Applicatino”;// 文字列を配列の添え字で各文字を参照
for (int i = 0; i < str.Length; i++){
Console.WriteLine(“{0}: {1}”, i, str[i]);
}
// 文字列を文字型の配列に変換
string str2 = “Hello”;
char[] chars = str2.ToCharArray();
for (int i = 0; i < chars.Length; i++){
Console.WriteLine(chars[i]);
}
// 文字型の配列を文字列に変換
char[] chars2 = { ‘A’, ‘B’, ‘C’, ‘D’, ‘E’ };
str = new string(chars2);
Console.WriteLine(str);
// 文字型の演算
char char1 = ‘A’;
char char2 = (char)(char1 + 3);
Console.WriteLine(char2); // D を出力
}
}
}
■C#のStringBuilderクラス
文字列関連のもう一つ大事なクラスは、System.Text.StringBuilderです。
StringクラスはImmutableなので、文字列更新が多い場合は適してないです。
しかし、MutableタイプのStringBuilderクラスは文字列更新が多い場合によく使われます。このクラスは、別のメモリを生成・解放せず、バファを利用して文字列の更新処理をします。
特に、繰り返し処理内で文字列の結合などを行う場合は、stringではなくStringBuilderを使います。
namespace TestApplication
{
class Program
{
static void Main(string[] args)
{
StringBuilder strB = new StringBuilder();
for (int i = 0; i <= 5; i++)
{
strB.Append(i.ToString());
strB.Append(System.Environment.NewLine);
}
string str = strB.ToString();
Console.WriteLine(str);
}
}
}