<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Запись в массив из строки]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=17472</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17472&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Запись в массив из строки».]]></description>
		<lastBuildDate>Wed, 16 Nov 2022 16:42:59 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155694#p155694</link>
			<description><![CDATA[<p>Push не в том месте.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 16 Nov 2022 16:42:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155694#p155694</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155692#p155692</link>
			<description><![CDATA[<p><strong>teadrinker</strong> Я пробовал через пуш, поэтому и спросил. Когда я делал, он просто перезаписывал значения, а не добавлял новые.</p><p>Типо такого:<br /></p><div class="codebox"><pre><code>
str := &quot;[A] Самоа, Петя, 25, 400, [A] Крит, Вася, 40, 16600&quot;
keys := [&quot;Island&quot;, &quot;Name&quot;, &quot;quantity&quot;, &quot;price&quot;]
arr := []
Array_temp := StrSplit(str, &quot;,&quot;)

Loop, 2
{
	temp := A_index
	obj := {}
	For K, V in keys
	{
		if (temp == 1) {
			obj[V] := Array_temp[K]
		}
		else {
			obj[V] := Array_temp[K + 4]
		}
		arr.push(obj)
	}
}

MsgBox, % arr[1][&quot;Island&quot;] . &quot; + &quot; arr[2][&quot;Island&quot;]
</code></pre></div><p>Выводиться будет одинаковое название: [A] Самоа + [A] Самоа. Хотя должно же [A] Самоа + [A] Крит</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Wed, 16 Nov 2022 16:26:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155692#p155692</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155688#p155688</link>
			<description><![CDATA[<p>Читайте про методы массива, Push().</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 16 Nov 2022 15:53:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155688#p155688</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155686#p155686</link>
			<description><![CDATA[<p><strong>teadrinker</strong> Круто. Только не понял почему в массив всё нормально добавляется и после 1-ого индекса с четырьмя парами ключ-значение, идет второй индекс, в котором тоже четыре пары ключ-значение. И они не перезаписывают друг друга. В какой момент массив &quot;arr&quot; понимает, что надо добавлять второй индекс и т.д.?</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Wed, 16 Nov 2022 15:49:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155686#p155686</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155685#p155685</link>
			<description><![CDATA[<p>Если я правильно понял, то так:<br /></p><div class="codebox"><pre><code>str := &quot;мусор, мусор, мусор, [A] Самоа, Петя, 25, 400, [A] Крит, Вася, 40, 16600 и т.д.&quot;
keys := [&quot;Island&quot;, &quot;Name&quot;, &quot;quantity&quot;, &quot;price&quot;]
arr := []

m := &quot;&quot;
while RegExMatch(str, &quot;O)(\[A].+?),\s*(.+?),\s*(\d+),\s*(\d+)&quot;, m, m ? m.Pos + m.Len : 1) {
   obj := {}
   for k, v in keys
      obj[v] := m[k]
   arr.Push(obj)
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 16 Nov 2022 15:06:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155685#p155685</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155682#p155682</link>
			<description><![CDATA[<p><strong>teadrinker</strong> Из такой строки:<br /></p><div class="codebox"><pre><code>
мусор, мусор, мусор, [A] Самоа, Петя, 25, 400, [A] Крит, Вася, 40, 16600 и т.д.
</code></pre></div><p>В такой массив:<br /></p><div class="codebox"><pre><code>
Array := [{Island: &quot;[A] Самоа&quot;, Name: &quot;Петя&quot;, quantity: 25, price: 400}
		, {Island: &quot;[A] Крит&quot;, Name: &quot;Вася&quot;, quantity: 40, price: 16600}
		, ...]
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Wed, 16 Nov 2022 14:19:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155682#p155682</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155679#p155679</link>
			<description><![CDATA[<p>Непонятно, как должен выглядеть созданный массив, и по какому принципу он должен создаваться.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Wed, 16 Nov 2022 14:06:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155679#p155679</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Запись в массив из строки]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=155672#p155672</link>
			<description><![CDATA[<p>Доброго. </p><p>Запутался с массивами. Пробовал разные варианты, все где-то рядом, но не то. </p><p>Есть строка вида:<br /></p><div class="codebox"><pre><code>
мусор, мусор, мусор, [A] Остров, Имя, Количество, Цена, [A] Остров, ...., Цена и т.д.
</code></pre></div><p>Надо записать в ассоциативный массив все элементы &quot;Остров, Имя, Количество, Цена&quot;, в таком виде:<br /></p><div class="codebox"><pre><code>
Array := [{Island: &quot;123&quot;, Name: &quot;test&quot;, quantity: 11, price: 197}
		, {Island: &quot;2&quot;, Name: &quot;bla&quot;, quantity: 505, price: 16600}
		, ...]
</code></pre></div><p>Сейчас у меня сортирует и записывает, но не правильно. Из того что я пробывал, либо записывает в многомерный массив, либо в ассоциативный но только с одной ключ парой.</p><div class="codebox"><pre><code>
FileEncoding, UTF-8
FileRead, ni, ni.txt
Aluminum_arr := []

Array_temp := StrSplit(ni, &quot;,&quot;)

For Key, Value in Array_temp
{
	if InStr(Value, &quot;[&quot;[A-Z]&quot;]&quot;) {
		arr_index += 1
		Aluminum_arr[arr_index] := ({Island: Value})
			Continue
	}
	if (arr_index &gt;= 1) {
		temp_index += 1
			if (temp_index == 2) {
				Array := StrSplit(Value, &quot;\t&quot;)
				Aluminum_arr[arr_index] := ({quantity: Array[2]})
				price_temp := RegExReplace(Array[3], &quot;[^\d]&quot;, &quot;&quot;)
				Aluminum_arr[arr_index] := ({price: price_temp})
				temp_index := 0
					Continue
			}
			Aluminum_arr[arr_index] := ({name: Value})
	}
}

Return
; Пропускаю мусор, записываю Остров
; После Острова записываю имя, количество и цену
; Дальше опять Остров
</code></pre></div><p>Хотя бы в теории, как правильно добавлять в нужном мне виде в массив?</p>]]></description>
			<author><![CDATA[null@example.com (Botsy)]]></author>
			<pubDate>Wed, 16 Nov 2022 13:36:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=155672#p155672</guid>
		</item>
	</channel>
</rss>
