<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[QUIK -> DDE &mdash; Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
		<link>https://quik2dde.ru/viewtopic.php?id=105</link>
		<atom:link href="https://quik2dde.ru/extern.php?action=feed&amp;tid=105&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Lua: Как преобразовать строку с разделителями в таблицу?».]]></description>
		<lastBuildDate>Fri, 05 Sep 2014 07:44:52 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=650#p650</link>
			<description><![CDATA[<p>[url]http://www.lua.org/pil/20.2.html[/url]</p>]]></description>
			<author><![CDATA[null@example.com (mbul)]]></author>
			<pubDate>Fri, 05 Sep 2014 07:44:52 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=650#p650</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=649#p649</link>
			<description><![CDATA[<p><strong>mbul</strong>,<br />очередное спасибище! ) Вчера вышел из положения вот таким кодом, отрабатывает вроде, значение распихиваю в другую таблицу позже<br /></p><div class="codebox"><pre><code>ravno = string.find(line,&quot;=&quot;) + 0
if ravno &gt;1 then
   k=string.sub(line,1,ravno-1) 
   v=string.sub(line,ravno+1)
   settings[k] = v
end</code></pre></div><p>Ваш вариант конечно правильнее и короче. )<br />И может быть подскажете где посмотреть подробное описание операторов %w*+ и прочих для работы в строках? В [url]http://www.lua.ru/doc/5.4.html[/url] только пара примеров, гугл нифига не рулит или не знаю как задать запрос...</p>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Fri, 05 Sep 2014 07:39:50 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=649#p649</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=648#p648</link>
			<description><![CDATA[<div class="codebox"><pre><code>Line = &quot;codefs=RIU4,RIZ4,RNU4,&quot;
t={}
for k, v in string.gmatch(Line,&quot;(%w+)=(.*),&quot;) do
  t[k]={}
  for vv in string.gmatch(v,&quot;(%w+)&quot;) do
    t[k][#t[k]+1]=vv
  end
end</code></pre></div><p>t={ &quot;codefs&quot;={&quot;RIU4&quot;,&quot;RIZ4&quot;,&quot;RNU4&quot;}}</p>]]></description>
			<author><![CDATA[null@example.com (mbul)]]></author>
			<pubDate>Fri, 05 Sep 2014 02:24:49 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=648#p648</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=646#p646</link>
			<description><![CDATA[<p>Ну да, чем проще, тем лучше и понятнее. ) Выбрал для себя вариант с запятой в конце.<br />Подскажите ещё пожалуйста, вот так строка разбивается на субстроки до и после знака равно, но вторая субстрока берется только до первой запятой. Как заставить взять ВСЁ после знака равно?</p><div class="codebox"><pre><code>Line = &quot;codefs=RIU4,RIZ4,RNU4,&quot;
for k, v in string.gmatch(Line,&quot;(%w+)=(%w+)&quot;)

--чтобы стало k=&quot;codefs&quot;, v=&quot;RIU4,RIZ4,RNU4,&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Thu, 04 Sep 2014 11:56:16 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=646#p646</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=644#p644</link>
			<description><![CDATA[<p>Способ хорош, но надо понимать его ограничения и не забывать про них.<br />Например то, что в конце строки обязательно должна стоять запятая )</p><div class="quotebox"><cite>GREEN_X5 пишет:</cite><blockquote><p>Короче те же штаны, только вид сбоку. ) Вобщем нет такого интерпретируемого цикла...</p></blockquote></div><p>Не, ну можно же иначе сделать синтаксически, хоть суть и та же самая будет, конечно:</p><div class="codebox"><pre><code>local myString = &quot;XXX,YYY,ZZZ&quot;

for i,v in ipairs(myString:split(&quot;,&quot;)) do
    -- обработка таблицы поэлементно
    --  .... элемент в  v  .....
    message (v, 0)
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 03 Sep 2014 09:54:47 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=644#p644</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=643#p643</link>
			<description><![CDATA[<p>mbul, реально круто, спасибо. ) <br />Блин, надо как-то найти нормальное описание строкового синтаксиса, всякие w и %...</p>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Wed, 03 Sep 2014 09:46:31 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=643#p643</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=642#p642</link>
			<description><![CDATA[<p>local example = &quot;RSH3,VBZ2,O4Z2,O2Z2,SiM3,SiH3,SiF3,RIH3,RIM3,LKH3,LKZ2,GDZ2,GMZ2,GZH3,GZZ2,EuZ2,EDZ2,SiZ2,RIZ2,&quot;<br />for i in string.gmatch(example, &quot;(%w+)&quot;) do<br />&nbsp; print(i)<br />end</p>]]></description>
			<author><![CDATA[null@example.com (mbul)]]></author>
			<pubDate>Wed, 03 Sep 2014 09:25:42 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=642#p642</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=641#p641</link>
			<description><![CDATA[<p>Короче те же штаны, только вид сбоку. ) Вобщем нет такого интерпретируемого цикла...<br />Спасибо за ответ!<br />Вот думаю, можно было бы подумать насчет for pair или for ipair. Но загвоздка в том, что блоки текста между запятыми не в кавычках, поэтому цикл не сможет прочитать их как индексы или значения таблицы, правильно я понимаю?</p>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Wed, 03 Sep 2014 08:28:12 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=641#p641</guid>
		</item>
		<item>
			<title><![CDATA[Re: Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=640#p640</link>
			<description><![CDATA[<p>гугление подсказывает такой вот изящный вариант:</p><p>Добавляем метод к <strong>string</strong>:</p><div class="codebox"><pre><code>function string:split( inSplitPattern, outResults )
   if not outResults then
      outResults = { }
   end
   local theStart = 1
   local theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
   while theSplitStart do
      table.insert( outResults, string.sub( self, theStart, theSplitStart-1 ) )
      theStart = theSplitEnd + 1
      theSplitStart, theSplitEnd = string.find( self, inSplitPattern, theStart )
   end
   table.insert( outResults, string.sub( self, theStart ) )
   return outResults
end</code></pre></div><p>Использование:</p><div class="codebox"><pre><code>local myString = &quot;XXX,YYY,ZZZ&quot;

local myTable = myString:split(&quot;,&quot;)

for i = 1, #myTable do
    -- обработка таблицы поэлементно
    --  ..... myTable[i]  .....
end</code></pre></div><br /><p><span style="color: #FF2222"><strong>admin:</strong></span><br /><span style="color: #FF2222"><em><strong>GREEN_X5</strong>, ваш вопрос выделил в отдельную тему, надеюсь вы не против.</em></span></p>]]></description>
			<author><![CDATA[null@example.com (swerg)]]></author>
			<pubDate>Wed, 03 Sep 2014 04:02:50 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=640#p640</guid>
		</item>
		<item>
			<title><![CDATA[Lua: Как преобразовать строку с разделителями в таблицу?]]></title>
			<link>https://quik2dde.ru/viewtopic.php?pid=639#p639</link>
			<description><![CDATA[<p>Вот как раз вопрос по циклам. ) <br />Существует ли подходящий for each чтобы легко разобрать в массив строку типа<br />RSH3,VBZ2,O4Z2,O2Z2,SiM3,SiH3,SiF3,RIH3,RIM3,LKH3,LKZ2,GDZ2,GMZ2,GZH3,GZZ2,EuZ2,EDZ2,SiZ2,RIZ2,<br />Или нужно перебирать каждый знак строки? В Купайле вроде есть такое...</p><p>Вот такую конструкцию сейчас накидал. Это самое изящное что можно сделать в Lua? )))</p><div class="codebox"><pre><code>function GetCodes(sec)

    local list
    list = getClassSecurities(sec)
    local len
    len=string.len(list)
    local cod={}
    local REFi=0
    local item = &quot;NO&quot;
    local n=0
    for i=0,len-1,1 do
        item = &quot;NO&quot;
        if string.sub(list,i,i)==&quot;,&quot;  then
            item = string.sub(list,REFi,i-1)
            if item~=nil then
                cod[n]=item
                logMemo:Add(n..&quot; &quot;..item)
                REFi=i+1
                n=n+1
            end                
        end
    end
    return cod
end</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (GREEN_X5)]]></author>
			<pubDate>Tue, 02 Sep 2014 19:02:37 +0000</pubDate>
			<guid>https://quik2dde.ru/viewtopic.php?pid=639#p639</guid>
		</item>
	</channel>
</rss>
