<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Запись в массив из строки]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=17472&amp;type=atom" />
	<updated>2022-11-16T16:42:59Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=17472</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155694#p155694" />
			<content type="html"><![CDATA[<p>Push не в том месте.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-11-16T16:42:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155694#p155694</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155692#p155692" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Botsy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41069</uri>
			</author>
			<updated>2022-11-16T16:26:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155692#p155692</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155688#p155688" />
			<content type="html"><![CDATA[<p>Читайте про методы массива, Push().</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-11-16T15:53:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155688#p155688</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155686#p155686" />
			<content type="html"><![CDATA[<p><strong>teadrinker</strong> Круто. Только не понял почему в массив всё нормально добавляется и после 1-ого индекса с четырьмя парами ключ-значение, идет второй индекс, в котором тоже четыре пары ключ-значение. И они не перезаписывают друг друга. В какой момент массив &quot;arr&quot; понимает, что надо добавлять второй индекс и т.д.?</p>]]></content>
			<author>
				<name><![CDATA[Botsy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41069</uri>
			</author>
			<updated>2022-11-16T15:49:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155686#p155686</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155685#p155685" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-11-16T15:06:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155685#p155685</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155682#p155682" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Botsy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41069</uri>
			</author>
			<updated>2022-11-16T14:19:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155682#p155682</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155679#p155679" />
			<content type="html"><![CDATA[<p>Непонятно, как должен выглядеть созданный массив, и по какому принципу он должен создаваться.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2022-11-16T14:06:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155679#p155679</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Запись в массив из строки]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=155672#p155672" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Botsy]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=41069</uri>
			</author>
			<updated>2022-11-16T13:36:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=155672#p155672</id>
		</entry>
</feed>
