English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 文字列(String)

C#では、文字列はテキストを表す一連の文字です。それは文字、単語、またはダブルクォート「」で囲まれた長いパラグラフです。以下は文字列リテラルです。

"S"
"String"
"This is a string."

C#はStringデータ型を提供し、文字列リテラルを格納します。以下のように、文字列型の変数を宣言し、文字列リテラルを割り当てることができます。

string ch = "S";
string word = "String";
string text = "This is a string.";

文字列オブジェクトがメモリ内で最大になるサイズは2GB、約10億文字。しかし、実際のアプリケーションでは、CPUやメモリへの依存が少ないです。

C#で文字列変数を宣言する方法は2種類あります。System.Stringクラスとstringキーワードを使います。どちらも同じで、違いはありません。

string str1 = "Hello"; // 文字列キーワードを使って
 
String str2 = "Hello"; // System.Stringクラスを使って

C#では、文字列は文字の集合または配列です。したがって、char配列を使って文字列を作成することもできますし、char配列のように文字列にアクセスすることもできます。

char[] chars = {'H','e','l','l','o'};
string str1 = new string(chars);  
String str2 = new String(chars); 
foreach (char c in str1)
{
    Console.WriteLine(c);
}

特殊文字

現実世界のテキストはどんな文字も含むことができます。C#では、文字列はダブルクォートで囲まれているため、文字列の中にダブルクォート(”)を含むことができません。以下の内容はコンパイル時エラーとなります。

string text = "This is a "string" in C#.";

C#では、これらの特殊文字の前にエスケープシーケンス\(反斜杠)を使用して文字列に含めます。

文字列に含まれる特殊文字(\、\n、\r、\tなど)を含めるには、二重引用符の前に反斜杠\を使用します。

string text = "This is a \"string\" in C#.";
string str = "xyzdef\\rabc";
string path = "\\\\mypc\\ shared\\project";

ただし、各特殊文字に\を追加することは非常に面倒です。@接頭辞のある文字列はそのままに表示され、どんな文字もエスケープすることはできません。

string str = @"xyzdef\rabc";
string path = @"\\mypc\shared\project";
string email = @"[email protected]";

多行文字列を宣言するために@と\を使用します。

string str = @"this is a \
multi line \
string";

注意:文字列では、二重引用符が表示されるために必ず反斜杠を使用する必要があります。@はC#の特殊文字にのみ適用されます。

string text = @"This is a "string." in C#."; // エラー
string text = @"This is a \"string\" in C#."; // エラー
string text = "This is a \"string\" in C#."; // 有効

文字列の連結

複数の文字列は + 演算子で結合。

string name = "Mr." + "James" + "Bond" + " Code: 00"7";
 
string firstName = "James";
string lastName = "Bond";
string code = "007";
 
string agent = "Mr." + firstName + " " + lastName + " Code: " + code;

文字列はC#では変更不可能です。これは読み取り専用であり、一旦メモリに作成されると変更できません。文字列を連結するたびに、.NET CLRは連結された文字列の新しいメモリ位置を作成します。したがって、5以上の文字列を連結する場合は、StringBuilderではなく文字列を使用することをお勧めします。

文字列の挿入

文字列の挿入は文字列を結合するより良い方法です。私たちは+シンボルが文字列変数と静的字符串を結合します。

C#6特殊文字$が挿入値の文字列を識別するために使用されます。挿入値の文字列は静的字符串と文字列変数の組み合わせで、文字列変数は{}括弧内に配置されます。

string firstName = "James";
string lastName = "Bond";
string code = "007";
 
string fullName = $"Mr. {firstName} {lastName}, Code: {code}";

上記の挿入例では、$は挿入される文字列を示し、{}は文字列に合併する文字変数を含みます。

文字列中に{や}を含めるには、二つの大括弧「{{」または「}}」を使用してください。