Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

【.NET】指定した文字列を削除した文字列を取得する拡張メソッドRemove

指定した文字列を削除した文字列を取得する拡張メソッドRemoveです。

拡張メソッドのソースコード

using System;

namespace Extensions {
    static class StringExtensions {
        /// <summary>
        /// 指定された文字列を削除した文字列を取得します。
        /// </summary>
        /// <param name="self">System.Stringのインスタンス。</param>
        /// <param name="value">削除する文字列。</param>
        /// <returns>指定された文字列を削除した文字列。</returns>
        public static string Remove(this string self, string value) {
            if (value == null)
                throw new ArgumentNullException(nameof(value), "値をNullにすることはできません。");

            if (string.IsNullOrEmpty(self))
                return self;

            return self.Replace(value, "");
        }
    }
}

拡張メソッドのテスト

using System;

namespace Extensions {
    class Program {
        static void Main(string[] args) {
            string hoge1 = "abcdeabcde";
            Console.WriteLine(hoge1.Remove("ab"));      // cdecde

            try {
                string hoge2 = "abcdeabcde";
                Console.WriteLine(hoge2.Remove(null));
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);          // 値をNullにすることはできません。パラメータ名:value
            }

            string nullText = null;
            Console.WriteLine(nullText.Remove("a"));    // 出力なし

            string emptyText = "";
            Console.WriteLine(emptyText.Remove("a"));   // 出力なし

            Console.ReadKey();
        }
    }
}