[C# プログラミング入門] 文字列について(初期化や使い方)

今回は文字列(string)についてです。
C#で文字列をあつかうにはstring型を使います。

いろいろ書いてありますが、代入の書き方だけ覚えたらあとはこんなのあったなぁ程度に頭に入れておいて必要になった時にまた見返してください。

目次

文字列の初期値や代入について

string型の変数を宣言だけした場合、初期値は null になります。
このまま、その変数を使用するとエラーになるので注意してください。
宣言をしたら空文字(長さ0の文字列)を代入するようにしましょう。

string str1 = "";
string str2 = System.String.Empty; //これも空文字を表す

string型の変数に値を代入するには文字列を (ダブルコーテーション)で括ります。

string str1 = "abcde";
string str2 = "あいうえお";

複数行まとめて代入したいという場合は、@(アットマーク)を使います。

エスケープシーケンス

文字列の中でダブルコーテーションを使いたい場合、エスケープシーケンスを使います。
円マーク( / )を ” の前に付けるとダブルコーテーションを表します。

string str = "\"";
System.Console.WriteLine(str); // "

他にもそのままでは使えない文字があるのでその場合、エスケープシーケンスを使います。

エスケープシーケンス使用したい文字
\”ダブルコーテーション
\\円マーク
\n改行
\rキャレッジリターン
\t水平タブ
\v垂直タブ

@(逐語的識別子)アットマーク

逐語的識別子 @(アットマーク)を使うと 内に書いた文字列がそのまま使えます
ざっくりいうと、円マークなどエスケープが必要だった文字がそのまま書けて、
複数行も改行を使って入力できるようになります。

わかりにくいと思うのでサンプルです。
文字列の前に@を付けるだけで使えます。

//円マークがそのまま書ける
string str1_1 = "c:\\source\\ConsoleApp1";
string str1_2 = @"c:\source\ConsoleApp1";

//ダブルコーテーションは2回続けて書く
string str2_1 = " \" ";
string str2_2 = @" "" ";

//改行もEnterでいける
string str3_1 = "あいう\nえお";
string str3_2 = @"あいう
えお";

ついでですが、@を付けるとC#の予約語(キーワード)と同じ名前の変数名を付けることができます。

int @int = 10;
System.Console.WriteLine(@int);

文字列補間 $” { } ”

ドルマーク$ を使うと文字列リテラル(ダブルコーテーションで指定した文字列のこと)の中に変数を埋め込むことができます。埋め込まれた変数は文字列型に変換されます。

使い方は文字列の前に $ を付け、変数を { } の中に書きます。

int number1 = 1031;
System.Console.WriteLine($"私は「{number1}」です。"); //私は「1031」です。

文字列として “{“、”}” を使いたい場合は”{{“、”}}” と2つ続けて入力します。

int number1 = 1031;
System.Console.WriteLine($"私は{{number1}}です。");   //私は{number1}です。
System.Console.WriteLine($"私は{{{number1}}}です。"); //私は{1031}です

また、文字列に変換する際のフォーマットの指定もできます。
変数の後ろに : (コロン)を付けてフォーマットを指定します。

int numer1 = 1031;
System.Console.WriteLine($"私は「{numer1:000,000}」です。"); //私は「001,031」です。

アットマークとドルマークは一緒に使える

逐語的識別子(@)と文字列補間($)は一緒に使うことができる。

int number1 = 1031;
string moji = $@"
私は「{number1}」です。
";

string型とchar型の関係

string型は文字列を表し、char型は1文字を表しています。

char c = 'a';
string s = "abc";

string型は内部にその文字数分のchar型のデータを持っています。
インデクサを使ってそれぞれの文字にアクセスできます。

using System;
class Program
{
    public static void Main()
    {
        string str = "abcde";

        //インデクサを使って1文字ずつ表示
        for (int i = 0; i < str.Length; i++) {
            Console.WriteLine($"str[{i}] = {str[i]}");
        }
    }
}
str[0] = a
str[1] = b
str[2] = c
str[3] = d
str[4] = e

foreachを使っても1つずつchar型のデータを取り出すことが出来ます。

using System;
class Program
{
    public static void Main()
    {
        string str = "abcde";

        //1文字ずつ表示
        foreach (char c in str) {
            Console.WriteLine(c);
        }
    }
}

そのほかの文字列関連の記事

文字列関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次