public static string?RemoveLines(this string?value, Func <string, bool> shouldRemoveLine) { if (Strings.IsNullOrEmpty(value)) { return(value); } if (value[value.Length - 1] == '\n') { value = value.Substring(0, value.Length - 1); } var sb = new StringBuilder(capacity: value.Length); foreach (var line in value.Split('\n')) { if (!shouldRemoveLine(line)) { sb.Append(line).Append('\n'); } } return(sb.ToString()); }