public static string ReplaceFrom(string sequence, string replacement, MatchingPredicateOptions options) { var @char = options.GetSingleChar(); var sb1 = new StringBuilder(); var sb2 = new StringBuilder(); for (var i = 0; i < sequence.Length; i++) { var index = i; if (sequence[i] == @char) { sb1.Append(replacement); sb2.Append(sequence[i]); } else { sb2.Append(replacement); sb1.Append(sequence[i]); } } return(options.Not.Ifttt(sb2.ToString, sb1.ToString)); }
public static bool MatchesAllOf(string sequence, MatchingPredicateOptions options) { var @string = options.GetSequenceChars(); if (sequence.Length % @string.Length != 0) { return(false); } var times = sequence.Length / @string.Length; return(sequence == @string.Repeat(times)); }
public static bool MatchesAllOf(string sequence, MatchingPredicateOptions options) { var @char = options.GetSingleChar(); for (var i = 0; i < sequence.Length; i++) { if (sequence[i] != @char) { return(false); } } return(true); }
public static string TrimEndFrom(string sequence, MatchingPredicateOptions options) { var @char = options.GetSingleChar(); var result = sequence.TrimEnd(@char); if (options.Not) { var times = sequence.Length - result.Length; return(@char.Repeat(times)); } else { return(result); } }
public static string TrimFrom(string sequence, MatchingPredicateOptions options) { var @char = options.GetSingleChar(); var result = sequence.Trim(@char); if (options.Not) { var(f, l) = CharMatcherUtils.GetHeadAndTailLength(sequence, result); return($"{@char.Repeat(f)}{@char.Repeat(l)}"); } else { return(result); } }
public static string TrimEndFrom(string sequence, MatchingPredicateOptions options) { var @string = options.GetSequenceChars(); var result = sequence.TrimPhraseStart(@string); if (options.Not) { var length = sequence.Length - result.Length; var times = (int)(length / @string.Length); return(@string.Repeat(times)); } else { return(result); } }
public static string ReplaceFrom(string sequence, string replacement, MatchingPredicateOptions options) { var @string = options.GetSequenceChars(); var result = sequence.Replace(@string, replacement); if (!options.Not) { return(result); } var replacedTimes = (result.Length - sequence.Length) / (replacement.Length - @string.Length); var unchangedLength = result.Length - replacedTimes * replacement.Length; var repeatTimes = unchangedLength + replacedTimes; return(Strings.Repeat(replacement, repeatTimes)); }
public static string TrimFrom(string sequence, MatchingPredicateOptions options) { var @string = options.GetSequenceChars(); var result = sequence.TrimPhrase(@string); if (options.Not) { var(f, l) = CharMatcherUtils.GetHeadAndTailLength(sequence, result); var f2 = (int)(f / @string.Length); var l2 = (int)(l / @string.Length); return($"{@string.Repeat(f2)}{@string.Repeat(l2)}"); } else { return(result); } }
public static string CollapseFrom(string sequence, char replacement, MatchingPredicateOptions options) { var @char = options.GetSingleChar(); var sb = new StringBuilder(); void UpdateAct(StringBuilder c, char r) => c.Append(r); for (var i = 0; i < sequence.Length; i++) { var index = i; var checker = sequence[i] == @char; options.Not.Ifttt( () => checker.Ifttt(() => UpdateAct(sb, sequence[index]), () => UpdateAct(sb, replacement)), () => checker.Ifttt(() => UpdateAct(sb, replacement), () => UpdateAct(sb, sequence[index]))); } return(sb.ToString()); }
public static string RemoveFrom(string sequence, MatchingPredicateOptions options, bool antiNot = false) { var @char = options.GetSingleChar(); var counter = 0; var sb = new StringBuilder(); for (var i = 0; i < sequence.Length; i++) { if (sequence[i] == @char) { ++counter; continue; } sb.Append(sequence[i]); } return(antiNot ? options.Not.Ifttt(() => sb.ToString(), () => Strings.Repeat(@char, counter)) : options.Not.Ifttt(() => Strings.Repeat(@char, counter), () => sb.ToString())); }
public static string RemoveFrom(string sequence, MatchingPredicateOptions options, bool antiNot = false) { var @string = options.GetSequenceChars(); var sb = new StringBuilder(); var counter = 0; if (@string.Length > sequence.Length) { sb.Append(sequence); } else { for (var i = 0; i < sequence.Length; i++) { if (i + @string.Length > sequence.Length) { var rest = sequence.Substring(i); sb.Append(rest); break; } var t = sequence.Substring(i, @string.Length); if (t != @string) { sb.Append(sequence[i]); } else { i = i + @string.Length - 1; //fix position ++counter; //update counter } } } return(antiNot ? options.Not.Ifttt(sb.ToString, () => Strings.Repeat(@string, counter)) : options.Not.Ifttt(() => Strings.Repeat(@string, counter), sb.ToString)); }
public static bool MatchesAnyOf(string sequence, MatchingPredicateOptions options) { var @string = options.GetSequenceChars(); return(sequence.IndexWholePhrase(@string) >= 0); }