@Spearhead:
Zamiast dodawać osobną funkcję można by rozważyć dodanie opcjonalnego parametru do istniejącej, który pozwala na wybór strategii radzenia sobie z błędami.
Ten komentarz jest bezwartościowy bez wyjaśnienia dlaczego uważasz propozycję za niepoprawną.
Nie wiem po co ta nieprofesjonalna uszczypliwość. Jak ktoś ci robi code review to też tak reagujesz pod każdym komentarzem? Ktoś chce z dobrej woli pomóc, doradzić, podsunąć pomysł i tylko mu się dostaje. Proponuję popracować nad skillami miękkimi, bo z tego co widzę już któryś raz się wykazujesz kompletnie niepotrzebną opryskliwością.
Zabawne jest to, że w BCLu .NETa nierzadko właśnie tak to jest rozwiązane i też pomyślałem o tym jako o sensownej opcji, a przynajmniej rozważenia (bo przecież wiadomo że mało kto robi tak dobre API jak ludzie tworzący BCL .neta)
np.
public string[] Split (char separator, StringSplitOptions options = System.StringSplitOptions.None);
Gdzie "StringSplitOptions"
[Flags]
public enum StringSplitOptions
{
/// <summary>
/// Do not transform the results. This is the default behavior.
/// </summary>
None = 0,
/// <summary>
/// Remove empty (zero-length) substrings from the result.
/// </summary>
/// <remarks>
/// If <see cref="RemoveEmptyEntries"/> and <see cref="TrimEntries"/> are specified together,
/// then substrings that consist only of whitespace characters are also removed from the result.
/// </remarks>
RemoveEmptyEntries = 1,
/// <summary>
/// Trim whitespace from each substring in the result.
/// </summary>
TrimEntries = 2
}
czy jak już w temacie regexa ;)
public Regex (string pattern, System.Text.RegularExpressions.RegexOptions options);
enum RegexOptions
{
/// <summary>Use default behavior.</summary>
None = 0x0000,
/// <summary>Use case-insensitive matching.</summary>
IgnoreCase = 0x0001, // "i"
/// <summary>
/// Use multiline mode, where ^ and $ match the beginning and end of each line
/// (instead of the beginning and end of the input string).
/// </summary>
Multiline = 0x0002, // "m"
/// <summary>
/// Do not capture unnamed groups. The only valid captures are explicitly named
/// or numbered groups of the form (?<name> subexpression).
/// </summary>
ExplicitCapture = 0x0004, // "n"
/// <summary>Compile the regular expression to Microsoft intermediate language (MSIL).</summary>
Compiled = 0x0008,
/// <summary>
/// Use single-line mode, where the period (.) matches every character (instead of every character except \n).
/// </summary>
Singleline = 0x0010, // "s"
/// <summary>Exclude unescaped white space from the pattern, and enable comments after a number sign (#).</summary>
IgnorePatternWhitespace = 0x0020, // "x"
/// <summary>Change the search direction. Search moves from right to left instead of from left to right.</summary>
RightToLeft = 0x0040,
/// <summary>Enable ECMAScript-compliant behavior for the expression.</summary>
ECMAScript = 0x0100,
/// <summary>Ignore cultural differences in language.</summary>
CultureInvariant = 0x0200,
/// <summary>
/// Enable matching using an approach that avoids backtracking and guarantees linear-time processing
/// in the length of the input.
/// </summary>
/// <remarks>
/// Certain features aren't available when this option is set, including balancing groups,
/// backreferences, positive and negative lookaheads and lookbehinds, and atomic groups.
/// Capture groups are also ignored, such that the only capture available is that for
/// the top-level match.
/// </remarks>
NonBacktracking = 0x0400,
}
I takie Options można wtedy ORować
RegexOptions options = RegexOptions.IgnoreCase | RegexOptions.Compiled;