1. ホーム
  2. c#

[解決済み】Stringクラスの中で、最初のN文字だけを返すメソッドは何ですか?

2022-04-11 19:24:32

質問

の拡張メソッドを書きたいのですが、どうすればいいですか? String クラスは、入力文字列が指定された長さよりも長い場合は N のみ、最初の N の文字が表示されます。

こんな感じです。

public static string TruncateLongString(this string str, int maxLength)
{
    if (str.Length <= maxLength)
        return str;
    else
        //return the first maxLength characters                
}

String.*() メソッドを使用すると、最初の N の文字が str ?

解決方法は?

public static string TruncateLongString(this string str, int maxLength)
{
    if (string.IsNullOrEmpty(str)) return str;

    return str.Substring(0, Math.Min(str.Length, maxLength));
}

C# 8 以降では、さらに 範囲 を使えば、少しは楽になります。

public static string TruncateLongString(this string str, int maxLength)
{
    return str?[0..Math.Min(str.Length, maxLength)];
}

これを式体を使ってさらに小さくすることができる。

public static string TruncateLongString(this string str, int maxLength) =>
    str?[0..Math.Min(str.Length, maxLength)];

null-conditional演算子( ? ) がある場合に対処するためにあります。 str がNULLであることを示します。これは、説明的なNULLチェックの必要性を置き換えるものです。