libro
www.tuyano.com
初心者のためのC#プログラミング入門

文字列と日時 (1/4)

作成:2013-11-23 10:33
更新:2013-11-23 10:33

■文字列の比較

C#では、テキスト(文字列)はstringというタイプとして用意されています。このテキストに関するクラスとして用意されているのが「String」です。「え、何が違うの?」と思った人。実は、stringというのは、Stringクラスのエイリアスなのです。ですから、string ○○……などとこれまで書いてきたものも、すべては内部的にStringクラスのインスタンスとして認識されていたのですね。

つまり、C#でテキストを扱うということは、イコール「Stringクラスの使い方を理解する」ということだと考えていいでしょう。

このクラスには各種のテキスト操作に関するメソッドが用意されています。まずは文字列の比較に関連するものからです。2つのオブジェクトを比較するequalsメソッドや、==による比較の他に、Stringクラスにはいろいろな文字列比較のメソッドが用意されています。


●指定の文字列で始まるか?
bool 変数 = 《String》StartsWith(《String》);

●指定の文字列で終わるか?
bool 変数 = 《String》EndsWith(《String》);
StartsWithは、その文字列が引数に指定した文字列で始まるかどうかをチェックします。例えば、str.Startswith("A")ならば、変数strの文字列が"A"で始まるかどうかをチェックします。

同様に、EndsWithは、引数で指定した文字列で終わるかどうかをチェックするものです。引数で指定した文字列で終わる場合はtrueを返します。

●どちらが大きいか?
int 変数 = String.Compare(《String》, 《String》);
int 変数 = 《String》.CompareTo(《String》);
この文字列(インスタンス)と、引数に指定した文字列のどちらが大きいかを示します。返値は整数で、等しければゼロ、この文字列が引数より大きければ正の整数、逆は負の整数となります。文字列で「どちらが大きいか」というのは意味がよくわからない、という人もいるでしょうが、これはソートなどの並べ替えをするとき、どちらが手前に来るか?を考えればわかるでしょう。手前に来る方が小さい文字列というわけです。

●文字列が含まれているか?
int 変数 = 《String》.IndexOf(《String》);
int 変数 = 《String》.LastIndexOf(《String》);
これは、文字列(インスタンス)の中に、引数で指定した文字列が含まれているか?を調べます。IndexOfは、文字列が含まれていたなら、そのインデックス(冒頭から何文字目か)を返します。複数ヶ所あった場合には最初の項目のインデックスを返します。

LastIndexOfは、IndexOfと同様に引数の文字列の位置を調べます。これもやはりん文字目かを示すint値が返されますが、複数の箇所に検索文字列が見つかった場合には、その一番最後の項目のインデックスを返します。

この他にもまだありますが、とりあえずこれくらい覚えておけば簡単な比較は出来るようになるでyしょう。では、下のリスト欄に簡単な利用例を挙げておきます。実行後、テキストを入力しEnterすると、あらかじめ用意しておいた変数s1と入力テキストを比較した結果を出力していきます。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

using System;

namespace MyCLIApp
{
    class Program
    {
        public static void Main(string[] args)
        {
            
            string s1 = "Hello! Welcome to C# World!";
            Console.WriteLine("s1:" + s1);
            Console.Write("s2:");
            string s2 = Console.ReadLine();
            // s1がs2で始まるか?
            Console.WriteLine(s1.StartsWith(s2));
            // s1のほうがs2より大きいか?
            Console.WriteLine(s1.CompareTo(s2));
            // s1の何文字目にs2があるか?
            Console.WriteLine(s1.IndexOf(s2));
            Console.ReadKey(true);
        }
    }
}

※関連コンテンツ

「初心者のためのC#プログラミング入門」に戻る