public static void Main()
Console.WriteLine("Sammy".TrimEnd("my"));
Console.WriteLine("moinmoin gibts gips? gips gibts moin".TrimStart("moin", false));
Console.WriteLine("moinmoin gibts gips? gips gibts moin".Trim("moin").Trim());
public static class Extension
public static string TrimStr(this string str, string trimStr, bool trimEnd = true, bool repeatTrim = true,
StringComparison comparisonType = StringComparison.OrdinalIgnoreCase)
if (!(str ?? "").EndsWith(trimStr)) return str;
var pos = str.LastIndexOf(trimStr, comparisonType);
if ((!(pos >= 0)) || (!(str.Length - trimStr.Length == pos))) break;
str = str.Substring(0, pos);
var pos = str.IndexOf(trimStr, comparisonType);
str = str.Substring(trimStr.Length, str.Length - trimStr.Length);
} while (repeatTrim && strLen > str.Length);
public static string TrimEnd(this string str, string trimStr, bool repeatTrim = true,
StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) => TrimStr(str, trimStr, true, repeatTrim, comparisonType);
public static string TrimStart(this string str, string trimStr, bool repeatTrim = true,
StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) => TrimStr(str, trimStr, false, repeatTrim, comparisonType);
public static string Trim(this string str, string trimStr, bool repeatTrim = true,
StringComparison comparisonType = StringComparison.OrdinalIgnoreCase) => str.TrimStart(trimStr, repeatTrim, comparisonType).TrimEnd(trimStr, repeatTrim, comparisonType);