DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

C#でMid、Left、Right関数の代わりになるものは?

VBでは、MidLeftRight関数を使用して文字列の一部を取得することができます。これらの関数と同じことをC#で行うには、String.Substringメソッドを使います。

Mid関数とSubstringメソッドはほぼ同じです。しかし、取得する文字列の開始位置の指定方法が、Mid関数では1文字目が 1 となるのに対して、Substringメソッドでは 0 となるため、SubstringではMidよりも1つ小さい開始位置を指定しなければなりません。

また、Mid関数では文字列がNothingであったり、開始位置を文字列の長さよりも大きくした場合に、空の文字列が返されますが、Substringメソッドでは例外ArgumentOutOfRangeExceptionが発生します。さらに、Mid関数は取得しようとしている文字列の長さと開始位置を足した数が元の文字列の長さよりも大きい時は、開始位置から文字列の末尾までが返されますが、Substringメソッドでは例外ArgumentOutOfRangeExceptionが発生します。

以下に、Mid、Left、Right関数の代わりになるであろうメソッドを示します。

C#
コードを隠すコードを選択
/// <summary>
/// 文字列の指定した位置から指定した長さを取得する
/// </summary>
/// <param name="str">文字列</param>
/// <param name="start">開始位置</param>
/// <param name="len">長さ</param>
/// <returns>取得した文字列</returns>
public static string Mid(string str, int start, int len)
{
    if (start <= 0)
    {
        throw new ArgumentException("引数'start'は1以上でなければなりません。");
    }
    if (len < 0)
    {
        throw new ArgumentException("引数'len'は0以上でなければなりません。");
    }
    if (str == null || str.Length < start)
    {
        return "";
    }
    if (str.Length < (start + len))
    {
        return str.Substring(start - 1);
    }
    return str.Substring(start - 1, len);
}

/// <summary>
/// 文字列の指定した位置から末尾までを取得する
/// </summary>
/// <param name="str">文字列</param>
/// <param name="start">開始位置</param>
/// <returns>取得した文字列</returns>
public static string Mid(string str, int start)
{
    return Mid(str, start, str.Length);
}

/// <summary>
/// 文字列の先頭から指定した長さの文字列を取得する
/// </summary>
/// <param name="str">文字列</param>
/// <param name="len">長さ</param>
/// <returns>取得した文字列</returns>
public static string Left(string str, int len)
{
    if (len < 0)
    {
        throw new ArgumentException("引数'len'は0以上でなければなりません。");
    }
    if (str == null)
    {
        return "";
    }
    if (str.Length <= len)
    {
        return str;
    }
    return str.Substring(0, len);
}

/// <summary>
/// 文字列の末尾から指定した長さの文字列を取得する
/// </summary>
/// <param name="str">文字列</param>
/// <param name="len">長さ</param>
/// <returns>取得した文字列</returns>
public static string Right(string str, int len)
{
    if (len < 0)
    {
        throw new ArgumentException("引数'len'は0以上でなければなりません。");
    }
    if (str == null)
    {
        return "";
    }
    if (str.Length <= len)
    {
        return str;
    }
    return str.Substring(str.Length - len, len);
}

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。