読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

C#のstringクラスの文字列の比較について

C#
<スポンサーリンク>

C#では、stringクラスを使って文字列を扱います。
文字列を比較するとき、Javaなどでは、「==」とすると、演算子の両方の項目が同じオブジェクトを参照しているかを判定します。
でもC#のstring型では、「==」演算子を2つのstringの参照に使用する場合は、文字列の内容自体が同じかどうかが比較されます。

以下のサンプルで、
文字列の長さを取得する
→str.Length
これはそのまんま。


文字列を比較する
→==
参照ではなく、文字列の内容自体が比較されます。


文字列のコピーを返す
→String.Copy(str1)


文字列の大きさを比較する
→str1.CompareTo(str2)
str1の方が長い文字列だったら0より大きな値を返す。
str1の方が短い文字列だったら0より小さい値を返す。


文字列のうち、指定した文字と一致する部分が何文字目かを取り出す
→str.IndexOf("hoge")


1文字ずつ取り出す
→str[i]
文字列は配列のように1文字ずつ扱うことができます。


などの使い方を見ていきます。

using System;
using System.Collections.Generic;
class Example
{
    static void Main()
    {
        string sentence = "世の中のほとんどの人は自由なんて求めてはいないんだ。求めていると思いこんでいるだけだ。すべては幻想だ。もしほんとうに自由を与えられたりしたら、たいていの人間は困り果ててしまうよ。" +
        "覚えておくといい。人々はじっさいには不自由が好きなんだ。";

        string sentence2 = string.Copy(sentence);

        string sentence3 = "起こってしまったことというのは、粉々に割れてしまったお皿と同じだ。どんなに手を尽くしても、それはもとどおりにはならない";

        Console.WriteLine("文字列の長さ:" + sentence.Length + "文字");

        for (int i = 0; i < sentence.Length; i++)
        {
            Console.Write(sentence[i]);
        }
        Console.WriteLine();

        if (sentence == sentence2)
        {
            Console.WriteLine("sentenceとsentence2は同じもの");
        }
        else
        {
            Console.WriteLine("sentenceとsentence2は異なります");
        }

        int result = sentence.CompareTo(sentence3);
        Console.WriteLine("比較した文字列より大きければ1より大きな値:" + result);

        int index = sentence3.IndexOf("粉々");
        Console.WriteLine("「粉々」というのは" + index + "番目にあるよ");
    }
}

上のサンプルを実行した結果は以下のようになります。

文字列の長さ:117文字
世の中のほとんどの人は自由なんて求めてはいないんだ。求めていると思いこんでいるだ
けだ。すべては幻想だ。もしほんとうに自由を与えられたりしたら、たいていの人間は困
り果ててしまうよ。覚えておくといい。人々はじっさいには不自由が好きなんだ。
sentenceとsentence2は同じもの
比較した文字列より大きければ1より大きな値:1
「粉々」というのは16番目にあるよ
続行するには何かキーを押してください . . .

なお、stringオブジェクトは「不変」なので、注意が必要です。


<参考文献>
独習C# 第3版