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());
            }
Beispiel #10
0
            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()));
            }
Beispiel #11
0
            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));
            }
Beispiel #12
0
            public static bool MatchesAnyOf(string sequence, MatchingPredicateOptions options)
            {
                var @string = options.GetSequenceChars();

                return(sequence.IndexWholePhrase(@string) >= 0);
            }