<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Spintax с несколькими уровнями вложенности]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17528</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17528&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Spintax с несколькими уровнями вложенности».]]></description>
		<lastBuildDate>Mon, 26 Dec 2022 10:03:34 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Spintax с несколькими уровнями вложенности]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156126#p156126</link>
			<description><![CDATA[<p>Все работает. Проверил на более сложной вариации текста, все идеально рандомизирует. Просто нет слов! Большое вам спасибо уважаемый <strong>teadrinker</strong>, не первый раз выручаете меня!</p>]]></description>
			<author><![CDATA[null@example.com (ppss42)]]></author>
			<pubDate>Mon, 26 Dec 2022 10:03:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156126#p156126</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Spintax с несколькими уровнями вложенности]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156125#p156125</link>
			<description><![CDATA[<div class="quotebox"><cite>ppss42 пишет:</cite><blockquote><p>Да, действительно )</p></blockquote></div><p>Ознакомьтесь, пожалуйста, с <a href="https://forum.script-coding.com/misc.php?action=rules">Правилами</a>, отредактируйте свой пост. Обратите внимание на <a href="https://forum.script-coding.com/misc.php?action=rules#literacy">точки</a> в конце предложений.<br />Вроде так работает:<br /></p><div class="codebox"><pre><code>text = {Привет {Артем|Владимир}. Как твои дела?|Здравствуй {Света|Маша}. Чем занята?}
randomText := text
while RegExMatch(randomText, &quot;xO)( \{ (?: [^{}]++ | (?-1) )* } )&quot;, m)
   randomText := SubStr(randomText, 1, m.Pos - 1) . GetRandomText(SubStr(m[0], 2, -1)) . SubStr(randomText, m.Pos + m.Len)

MsgBox, % randomText

GetRandomText(text) {
   newText := RegExReplace(text, &quot;(\{|(?!^)\G)((?!}).)*?\K\|&quot;, Chr(1))
   arr := StrSplit(newText, &quot;|&quot;)
   Random, rand, 1, arr.Count()
   Return StrReplace(arr[rand], Chr(1), &quot;|&quot;)
}</code></pre></div><p>Особо не тестировал.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 26 Dec 2022 09:52:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156125#p156125</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Spintax с несколькими уровнями вложенности]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156124#p156124</link>
			<description><![CDATA[<p><strong>teadrinker</strong><br />Да, действительно. Проглядел. Возможно такой пример будет правильнее: <br />&quot;{привет {Артем|Владимир}. Как твои дела?|Здравствуй {Света|Маша}. Чем занята?}&quot;<br />Т.е. на выходе будет какое то одно предложение. Например &quot;Привет Артем. Как твои дела?&quot; либо &quot;Здравствуй Маша. Чем занята?&quot; Проверил на первом попавшемся онлайн сервисе по рандомизации текста, и он выдает правильную вариацию, но в приведенном выше скрипте, это не срабатывает. Искал решение на зарубежном форуме и ничего не нашел.</p>]]></description>
			<author><![CDATA[null@example.com (ppss42)]]></author>
			<pubDate>Mon, 26 Dec 2022 08:48:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156124#p156124</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Spintax с несколькими уровнями вложенности]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156123#p156123</link>
			<description><![CDATA[<div class="quotebox"><cite>ppss42 пишет:</cite><blockquote><p>{Привет|Здравствуй} {Ты сейчас {дома|на улице|в кафе}}?</p></blockquote></div><p>По-моему, здесь одна пара скобок лишняя:<br /></p><div class="quotebox"><blockquote><p>{Привет|Здравствуй} Ты сейчас {дома|на улице|в кафе}?</p></blockquote></div><p>Или я чего-то не понимаю?</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Mon, 26 Dec 2022 08:17:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156123#p156123</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Spintax с несколькими уровнями вложенности]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=156120#p156120</link>
			<description><![CDATA[<p>Здравствуйте. Подскажите пожалуйста, как реализовать spintax на ahk с несколькими уровнями вложенности? На просторах рунета находил спинтакс, но он работает по типу &quot;{Привет|Хай}&quot; а мне необходимо как в примере ниже:<br />&quot;{Привет|Здравствуй} {Ты сейчас {дома|на улице|в кафе}}?&quot;<br />Скрипт который я пытался использовать:<br /></p><div class="codebox"><pre><code>string = {Привет|Здравствуй}
MsgBox % spintax(string)

spintax(string) {
	Pos := 1
	while (Pos := RegExMatch(string, &quot;{([^}]*)}&quot;, M, Pos + StrLen(R)))
		string := StrReplace(string, M, R := getRandomElement(StrSplit(M1, &quot;|&quot;)))

	return string
}

getRandomElement(Arr) {
	Random rand, 1, % Arr.Count()
	return Arr.RemoveAt(rand)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (ppss42)]]></author>
			<pubDate>Mon, 26 Dec 2022 02:58:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=156120#p156120</guid>
		</item>
	</channel>
</rss>
