Exemple #1
0
        public string PerformReplacements(string text, ReplacementInfo replacementInfo)
        {
            if (replacementInfo == null)
            {
                return(text);
            }

            //AM: replacements may be implemented more effectively
            buffer.Capacity = Math.Max(buffer.Capacity, text.Length + replacementInfo.DeltaLength);
            buffer.Append(text);
            IList <ReplacementItem> replacementItems = replacementInfo.Items;
            int count = replacementItems.Count;

            for (int i = 0; i < count; i++)
            {
                ReplacementItem item = replacementItems[i];
                buffer.Remove(item.CharIndex, 1);
                string replaceString = item.ReplaceWith;
                if (!String.IsNullOrEmpty(replaceString))
                {
                    buffer.Insert(item.CharIndex, replaceString);
                }
            }

            string result = buffer.ToString();

            buffer.Length = 0;
            return(result);
        }
Exemple #2
0
        public ReplacementInfo CreateReplacementInfo(string text, Dictionary <char, string> replaceTable)
        {
            ReplacementInfo result = null;

            for (int i = text.Length - 1; i >= 0; i--)
            {
                string replaceWith;
                if (replaceTable.TryGetValue(text[i], out replaceWith))
                {
                    if (result == null)
                    {
                        result = new ReplacementInfo();
                    }
                    result.Add(i, replaceWith);
                }
            }
            return(result);
        }