1. ホーム
  2. c#

[解決済み] C#の組み込み型(Stringなど)を拡張するには?

2023-02-12 07:44:31

質問

皆さん、こんにちは。私は Trim a String . しかし、私は文字列自体の中で繰り返される空白をすべて取り除きたいのです、末尾や冒頭だけでなく。というようなメソッドでできました。

public static string ConvertWhitespacesToSingleSpaces(string value)
{
    value = Regex.Replace(value, @"\s+", " ");
}

から取得した ここから . しかし、私はこのコード片を String.Trim() を拡張するか、オーバーロードするか、オーバーライドする必要があると思います。 Trim メソッドを拡張するか、オーバーロードするか、オーバーライドする必要があると思うのですが... そのような方法はあるのでしょうか?

よろしくお願いします。

どのように解決するのですか?

を拡張することはできないので string.Trim() . というように、Extension メソッドを作ることができます。 ここで で説明されているように、空白を切り詰めたり減らしたりする拡張メソッドを作ることができます。

namespace CustomExtensions
{
    //Extension methods must be defined in a static class
    public static class StringExtension
    {
        // This is the extension method.
        // The first parameter takes the "this" modifier
        // and specifies the type for which the method is defined.
        public static string TrimAndReduce(this string str)
        {
            return ConvertWhitespacesToSingleSpaces(str).Trim();
        }

        public static string ConvertWhitespacesToSingleSpaces(this string value)
        {
            return Regex.Replace(value, @"\s+", " ");
        }
    }
}

というように使うことができます。

using CustomExtensions;

string text = "  I'm    wearing the   cheese.  It isn't wearing me!   ";
text = text.TrimAndReduce();

与える

text = "I'm wearing the cheese. It isn't wearing me!";