【C#】文字列の前方一致・後方一致を判定:StartsWithとEndsWithの使い方

目次

文字列の「前方一致」と「後方一致」

C#で文字列データを処理する際、「特定の文字列が “https” で始まっているか」や、「ファイル名が “.csv” で終わっているか」といった、文字列の先頭(前方)または末尾(後方)が特定のパターンと一致するかを判定したいケースは非常に一般的です。

このために、stringクラスにはStartsWithメソッドとEndsWithメソッドが標準で用意されています。この記事では、これらのメソッドの基本的な使い方と、大文字・小文字を区別せずに判定する方法について解説します。


StartsWith:文字列の開始を判定

StartsWithメソッドは、対象の文字列が、引数で指定した部分文字列で開始しているかどうかを bool 値(true または false)で返します。

デフォルトでは、大文字と小文字は厳密に区別されます。

StartsWith のコード例

URLが安全なプロトコル(https://)で始まっているかを確認する例です。

using System;

public class StartsWithExample
{
    public static void Main()
    {
        string websiteUrl = "https://example.com";
        string prefix = "https://";

        // "https://" で始まっているか (true)
        if (websiteUrl.StartsWith(prefix))
        {
            Console.WriteLine($"'{websiteUrl}' は '{prefix}' で始まっています。");
        }
        else
        {
            Console.WriteLine($"'{websiteUrl}' は '{prefix}' で始まっていません。");
        }

        // 大文字・小文字を区別するため、小文字の "http://" は false になる
        string insecurePrefix = "http://";
        if (websiteUrl.StartsWith(insecurePrefix))
        {
            Console.WriteLine("安全でない可能性があります。");
        }
    }
}

出力結果:

'https://example.com' は 'https://' で始まっています。

EndsWith:文字列の終了を判定

EndsWithメソッドは、対象の文字列が、引数で指定した部分文字列で終了しているかどうかを bool 値で返します。

こちらもStartsWithと同様に、デフォルトでは大文字と小文字を厳密に区別します。

EndsWith のコード例

アップロードされたファイル名が、許可された拡張子(.png)であるかを確認する例です。

using System;

public class EndsWithExample
{
    public static void Main()
    {
        string fileName = "Report_2025_Final.pdf";
        string validExtension = ".pdf";

        // ".pdf" で終わっているか (true)
        if (fileName.EndsWith(validExtension))
        {
            Console.WriteLine($"'{fileName}' は有効な拡張子 '{validExtension}' を持っています。");
        }
        else
        {
            Console.WriteLine($"'{fileName}' は無効な拡張子です。");
        }

        // 大文字・小文字を区別するため、".PDF" (大文字) は false になる
        if (fileName.EndsWith(".PDF"))
        {
            // このブロックは実行されない
        }
    }
}

出力結果:

'Report_2025_Final.pdf' は有効な拡張子 '.pdf' を持っています。

応用: 大文字・小文字を区別せずに判定する

StartsWithEndsWithのどちらのメソッドにも、StringComparison列挙型を引数として渡せるオーバーロード(引数が異なる同名メソッド)が用意されています。

これにより、大文字・小文字を無視した判定が可能になります。

  • StringComparison.OrdinalIgnoreCase: 大文字・小文字の区別を無視して比較する際の、高速で標準的な方法です。

コード例(大文字・小文字を無視)

ファイル拡張子が大文字の .JPG であっても、小文字の .jpg であっても受け入れたい場合の EndsWith の例です。

using System;

public class IgnoreCaseExample
{
    public static void Main()
    {
        string imageFile = "Photo_IMG_123.JPG"; // 拡張子が大文字
        string extension = ".jpg"; // 判定は小文字

        // 比較ルール: 大文字・小文字を無視
        StringComparison comparisonRule = StringComparison.OrdinalIgnoreCase;

        // EndsWith に比較ルールを指定
        if (imageFile.EndsWith(extension, comparisonRule))
        {
            Console.WriteLine($"'{imageFile}' は {extension} (大文字小文字無視) で終わっています。");
        }
        else
        {
            Console.WriteLine("無効なファイルです。");
        }
    }
}

出力結果:

'Photo_IMG_123.JPG' は .jpg (大文字小文字無視) で終わっています。

この方法は StartsWith でも同様に使用でき、http://HTTPS:// の両方を柔軟に判定できます。


まとめ

StartsWithEndsWithは、C#で文字列のプレフィックス(接頭辞)とサフィックス(接尾辞)を判定するための基本的なメソッドです。

  • str.StartsWith(prefix): prefixで始まるか(大文字・小文字を区別)。
  • str.EndsWith(suffix): suffixで終わるか(大文字・小文字を区別)。

大文字・小文字を無視したい場合は、StringComparison.OrdinalIgnoreCase を引数として渡すことで、より柔軟な判定を行うことができます。

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

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次