diff --git a/Components/CustomListBox.cs b/Components/CustomListBox.cs index ffa8ea4..bcab236 100644 --- a/Components/CustomListBox.cs +++ b/Components/CustomListBox.cs @@ -6,6 +6,7 @@ using System.Drawing; using System.Linq; using System.Reflection; using System.Text; +using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Windows.Forms; @@ -62,7 +63,95 @@ namespace Components // "Дорогой дневник, мне не подобрать слов чтобы описать всю радость пенис, что я испытал сегодня; блаблабла" StringBuilder tp = new StringBuilder(template); + string cleanTemplate = Regex.Replace(template, @"\{.*?\}", ""); + List symbolsTemplate = cleanTemplate.ToCharArray().ToList(); + List symbols = row.ToCharArray().ToList(); + int iTemp = 0; + bool isTemplate = true; + bool islastWasSpace = true; + List final = new List(); + List spaces = new List(); + for (int i = 0; i < symbols.Count(); i++) + { + if (symbols[i] == symbolsTemplate[iTemp]) + { + isTemplate = true; + iTemp++; + if (iTemp >= symbolsTemplate.Count) + { + i++; + while (i < symbols.Count()) + { + final.Add(symbols[i]); + i++; + } + break; + } + } + else + { + isTemplate = false; + } + if (!isTemplate) + { + final.Add(symbols[i]); + islastWasSpace = false; + } + else + { + if (!islastWasSpace) + { + final.Add(' '); + spaces.Add(final.Count - 1); + islastWasSpace = true; + } + } + } + final.Add(' '); + spaces.Add(final.Count - 1); + + List words = new List(); + StringBuilder w = new StringBuilder(); + for (int i = 0; i < final.Count; i++) + { + bool space = false; + for (int j = 0; j < spaces.Count; j++) + { + if (i == spaces[j]) + { + space = true; + } + } + if (space) + { + words.Add(w.ToString()); + w.Remove(0, w.Length); + i++; + if ( i == final.Count) + { + break; + } + } + w.Append(final[i]); + } + + StringBuilder t = new StringBuilder(template); + int wordind = 0; + for (int i = 0; i < t.Length; i++) + { + if (t[i] == '{') + { + i++; + while (t[i] != '}') + { + t.Remove(i, 1); + } + t.Insert(i, words[wordind], 1); + wordind++; + } + } + sb = t; foreach (var property in typeof(T).GetProperties()) {