ура у меня приняли ╰(*°▽°*)╯

This commit is contained in:
frog24 2024-10-04 10:39:01 +03:00
parent 016779550c
commit 77764ab6fa

View File

@ -49,6 +49,7 @@ namespace Components
public T GetObjectFromStr<T>() where T : class, new() public T GetObjectFromStr<T>() where T : class, new()
{ {
if (listBox.SelectedIndex < 0) if (listBox.SelectedIndex < 0)
{ {
return null; return null;
@ -57,101 +58,40 @@ namespace Components
T curObject = new T(); T curObject = new T();
StringBuilder sb = new StringBuilder(row); StringBuilder sb = new StringBuilder(row);
MessageBox.Show(sb.ToString()); //MessageBox.Show(sb.ToString());
//("Дорогой дневник, мне не подобрать слов чтобы описать всю {Mood}, что я испытал сегодня; {Date}", "{", "}"); string[] words = template.Split(new[] { char.Parse(start), char.Parse(end) });
// "Дорогой дневник, мне не подобрать слов чтобы описать всю радость пенис, что я испытал сегодня; блаблабла"
StringBuilder tp = new StringBuilder(template);
string cleanTemplate = Regex.Replace(template, @"\{.*?\}", ""); // Дорогой дневник, мне не подобрать слов чтобы описать всю {Mood}, что я испытал сегодня; {Date}
List<char> symbolsTemplate = cleanTemplate.ToCharArray().ToList(); // Дорогой дневник, мне не подобрать слов чтобы описать всю радость, что я испытал сегодня; 01.01.01
List<char> symbols = row.ToCharArray().ToList();
int iTemp = 0; StringBuilder myrow = new StringBuilder(row);
bool isTemplate = true; List<string> flexPartsTemplate = new();
bool islastWasSpace = true; foreach (string word in words)
List<char> final = new List<char>();
List<int> spaces = new List<int>();
for (int i = 0; i < symbols.Count(); i++)
{ {
if (symbols[i] == symbolsTemplate[iTemp]) if (row.Contains(word) && !string.IsNullOrEmpty(word))
{ {
isTemplate = true; myrow.Replace(word, end);
iTemp++;
if (iTemp >= symbolsTemplate.Count)
{
i++;
while (i < symbols.Count())
{
final.Add(symbols[i]);
i++;
}
break;
}
} }
else else
{ {
isTemplate = false; flexPartsTemplate.Add(word);
}
if (!isTemplate)
{
final.Add(symbols[i]);
islastWasSpace = false;
}
else
{
if (!islastWasSpace)
{
final.Add(' ');
spaces.Add(final.Count - 1);
islastWasSpace = true;
} }
} }
} string[] flexParts = myrow.ToString().Split(end);
final.Add(' '); int i = 1;
spaces.Add(final.Count - 1); StringBuilder result = new StringBuilder(template);
foreach (string word in flexPartsTemplate)
List<string> words = new List<string>();
StringBuilder w = new StringBuilder();
for (int i = 0; i < final.Count; i++)
{ {
bool space = false; if (!string.IsNullOrEmpty(word))
for (int j = 0; j < spaces.Count; j++)
{ {
if (i == spaces[j]) result.Replace(word, flexParts[i]);
{
space = true;
}
}
if (space)
{
words.Add(w.ToString());
w.Remove(0, w.Length);
i++; 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 = result;
}
}
sb = t;
foreach (var property in typeof(T).GetProperties()) foreach (var property in typeof(T).GetProperties())
{ {