<?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="http://forum.script-coding.com/extern.php?action=feed&amp;tid=13179&amp;type=atom" />
	<updated>2017-11-20T16:56:31Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=13179</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121446#p121446" />
			<content type="html"><![CDATA[<p><strong>belyankin12</strong>, спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Coffi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38848</uri>
			</author>
			<updated>2017-11-20T16:56:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121446#p121446</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121445#p121445" />
			<content type="html"><![CDATA[<p>Я бы не советовал заносить результат функции с аргументом text в переменную text. Ну а так все верно.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T16:52:06Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121445#p121445</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121444#p121444" />
			<content type="html"><![CDATA[<p><strong>belyankin12</strong>, так?<br /></p><div class="codebox"><pre><code>text := &quot;«Яндекс» - российская транснациональная компания, владеющая одноимённой системой поиска в Сети, интернет-порталами и службами в нескольких странах. Наиболее заметное положение занимает на рынках России, Турции, Белоруссии и Казахстана.&quot;

Func(text, arg) {
	str := StrSplit(text, A_Space)
	rtext := &quot;&quot;
	ttext := &quot;&quot;
	
	While (str.MaxIndex() != &quot;&quot;) {
		if (strlen(str[1]) = arg) {
			rtext .= &quot;&quot; . str[1] . &quot;`n&quot;
			str.Remove(1)
		} else if (strlen(str[1]) &lt; arg) {
			ttext := str[1]
			str.Remove(1)
			Loop {
				var := strlen(ttext) + strlen(str[1]) + 1
				if (var = arg) {
					rtext .= &quot;&quot; . ttext . &quot; &quot; . str1 . &quot;`n&quot;
					str.Remove(1)
					ttext := &quot;&quot;
					break
				} else if (var &lt; arg) {
					ttext .= &quot; &quot; . str[1] . &quot;&quot;
					str.Remove(1)
					continue
				} else {
					rtext .= &quot;&quot; . ttext . &quot;`n&quot;
					ttext := &quot;&quot;
					break
				}
			}
		} else {
			return, false
		}
	}
	return, %rtext%
}

text := func(text, 30)
str := strsplit(text, &quot;`n&quot;)

Loop, % str.MaxIndex() {
    send % str[A_Index] &quot;`n&quot;
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Coffi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38848</uri>
			</author>
			<updated>2017-11-20T16:20:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121444#p121444</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121443#p121443" />
			<content type="html"><![CDATA[<p>Ну воспользуйтесь функцией повыше чтобы разделить единую строчку на несколько, а потом воспользуйтесь strsplit по `n в качестве разделителя и в цикле все отправляйте:</p><div class="codebox"><pre><code>
text := &quot;123`n123`n123&quot;
str := strsplit(text, &quot;`n&quot;)

Loop, % str.MaxIndex() {
    send % str[A_Index]
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T16:16:57Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121443#p121443</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121442#p121442" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>belyankin12 пишет:</cite><blockquote><p>Что значит построчно? Я вижу единую строку. По какому принципу строка должна делиться на несколько?</p></blockquote></div><p>То есть, чтобы скрипт вставлял каждую строку построчно:<br /></p><div class="codebox"><pre><code>Text := &quot;«Яндекс» - российская транснациональная компания, владеющая одноимённой системой поиска в Сети, интернет-порталами и службами в нескольких странах. Наиболее заметное положение занимает на рынках России, Турции, Белоруссии и Казахстана.</code></pre></div><p>То есть он вставляет 1-ую строку через Send, - <strong>«Яндекс» - российская</strong><br />Затем, например ждёт 100 мс. И вставляет след. строку - <strong>транснациональная компания,</strong><br />И так далее:<br /></p><div class="quotebox"><blockquote><p>«Яндекс» - российская<br />транснациональная компания,<br />владеющая одноимённой <br />поиска в Сети,<br />интернет-порталами и службами<br />в нескольких странах. <br />заметное положение занимает <br />рынках России, Турции,<br />Белоруссии и Казахстана.</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[Coffi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38848</uri>
			</author>
			<updated>2017-11-20T16:03:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121442#p121442</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121441#p121441" />
			<content type="html"><![CDATA[<p>Хороший алгоритм. Я не додумался суммировать количество символов в словах, я разделял просто по макс. кол-ву символов. Теперь вышло куда короче и работает даже на коротких текстах:<br /></p><div class="codebox"><pre><code>text := &quot;«Яндекс» - российская транснациональная компания, владеющая одноимённой системой поиска в Сети, интернет-порталами и службами в нескольких странах. Наиболее заметное положение занимает на рынках России, Турции, Белоруссии и Казахстана.&quot;

Func(text, arg) {
	str := StrSplit(text, A_Space)
	rtext := &quot;&quot;
	ttext := &quot;&quot;
	
	While (str.MaxIndex() != &quot;&quot;) {
		if (strlen(str[1]) = arg) {
			rtext .= &quot;&quot; . str[1] . &quot;`n&quot;
			str.Remove(1)
		} else if (strlen(str[1]) &lt; arg) {
			ttext := str[1]
			str.Remove(1)
			Loop {
				var := strlen(ttext) + strlen(str[1]) + 1
				if (var = arg) {
					rtext .= &quot;&quot; . ttext . &quot; &quot; . str1 . &quot;`n&quot;
					str.Remove(1)
					ttext := &quot;&quot;
					break
				} else if (var &lt; arg) {
					ttext .= &quot; &quot; . str[1] . &quot;&quot;
					str.Remove(1)
					continue
				} else {
					rtext .= &quot;&quot; . ttext . &quot;`n&quot;
					ttext := &quot;&quot;
					break
				}
			}
		} else {
			return, false
		}
	}
	return, %rtext%
}

msgbox, % func(text, 30)</code></pre></div><p>Если количество символов от предыдущего до следующего пробела больше максимального количества символов, функция возвращает 0.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T15:34:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121441#p121441</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121438#p121438" />
			<content type="html"><![CDATA[<p>Ну и зачем эти ненадежные костыли?<br />Не проще ли действовать по такому алгоритму - разделять слова по знаку пробела, подсчитывать сколько в сумме букв и если меньше заданной, то присоединять к финальной переменной через пробел, а если больше, то через перенос строки?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2017-11-20T14:24:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121438#p121438</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121436#p121436" />
			<content type="html"><![CDATA[<p>Знак копирайта можно поменять на любой другой экзотический. Просто этот знак единственный &quot;экзотический&quot; который я вспомнил и который не нужно было с какого-либо сайта копировать (альт + 0169) - использовался для создания функции.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T14:04:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121436#p121436</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121431#p121431" />
			<content type="html"><![CDATA[<p>Он не то, что необязательный, он вредный.<br />Или по-вашему в тексте знак копирайта встречаться не может?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2017-11-20T12:06:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121431#p121431</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121430#p121430" />
			<content type="html"><![CDATA[<p>Мне так проще,&nbsp; я понимаю что он совсем не обязательный,&nbsp; но в msgbox проще увидеть спец. знак в конце строчки,&nbsp; чем пробел.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T11:59:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121430#p121430</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121427#p121427" />
			<content type="html"><![CDATA[<p><strong>belyankin12</strong>, а зачем вы используете StringReplace?</p>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2017-11-20T10:37:43Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121427#p121427</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121425#p121425" />
			<content type="html"><![CDATA[<p>Эта функция недописана мной. При проверке на маленьком тексте &quot;ха ха ха ха ха ха ха&quot; с попыткой добавить максимальное количество символов в строке 2 скрипт зацикливался намертво. Потому работает только с большими объемами текстов и большими аргументами. Сейчас у меня нет времени довести её до ума, потому доведите сами:<br /></p><div class="codebox"><pre><code>text := &quot;«Яндекс» - российская транснациональная компания, владеющая одноимённой системой поиска в Сети, интернет-порталами и службами в нескольких странах. Наиболее заметное положение занимает на рынках России, Турции, Белоруссии и Казахстана.&quot;
Fun(text, arg) {
	Loop %arg% {
		if (A_Index = arg) {
			StringReplace, text, text, %A_Space%, `n
			StringReplace, text, text, @#$$, %A_Space%, All
		} else {
			StringReplace, text, text, %A_Space%, @#$$
		}
	}
	return, % text
}

ffunc(text, arg) {
	
	arr2 := []
	wtext := &quot;&quot;
	rtext := &quot;&quot;
	ttext := &quot;&quot;
	ns := 0
	
	StringReplace, wtext, text, %A_Space%, ©, All
	Loop, parse, wtext,, 
	{
		arr2[A_Index] := A_LoopField
	}
	While (arr2.MaxIndex() != &quot;&quot;) {
		if (arr2[arg] = &quot;©&quot;) {
			Loop %arg% {
				if (A_Index = arg) {
					rtext .= &quot;`n&quot;
					break
				}
				rtext .= arr2[A_Index]
			}
			arr2.Remove(1, arg)
		} else {
			Loop %arg% {
				ttext .= arr2[A_Index]
			}
			
			Loop, parse, ttext,,
			{
				if (A_LoopField = &quot;©&quot;) {
					ns := A_Index
				}
			}
				
			Loop %ns% {
				if (A_Index = ns) {
					rtext .= &quot;`n&quot;
					break
				}
				rtext .= arr2[A_Index]
			}
			ttext := &quot;&quot;
			arr2.Remove(1, ns)
		}
	}
	StringReplace, rtext, rtext, ©, %A_Space%, all
	return, %rtext%
}

msgbox, % ffunc(text, 30)</code></pre></div><p>А может кто и подскажет что-то поумнее, а то у меня набор костылей.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T09:27:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121425#p121425</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121424#p121424" />
			<content type="html"><![CDATA[<p>Что значит построчно? Я вижу единую строку. По какому принципу строка должна делиться на несколько?</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T08:02:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121424#p121424</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121420#p121420" />
			<content type="html"><![CDATA[<p><strong>belyankin12</strong>, огромное спасибо за такой вариант, я изучил вашу функцию. Но я не понял, как сделать, чтобы он построчно вставлял данный текст, как здесь:<br /></p><div class="codebox"><pre><code>String := &quot;«Яндекс» — российская транснациональная компания, владеющая одноимённой системой поиска в Сети, интернет-порталами и службами в нескольких странах. Наиболее заметное положение занимает на рынках России, Турции, Белоруссии и Казахстана.&quot;, Start := 1, Length := 30

loop
{
   if ((NewString := SubStr(String, Start, Length)) = &quot;&quot;)
      break
   Send % NewString &quot;{Enter}&quot;
   Start+=Length
}
msgbox done</code></pre></div><p>Подскажите пожалуйста, я не понимаю <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" />. А также, подскажите, как установить максимальное количество слов в каждую строку. Благодарю.</p>]]></content>
			<author>
				<name><![CDATA[Coffi]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=38848</uri>
			</author>
			<updated>2017-11-20T06:41:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121420#p121420</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки на подстроки]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=121418#p121418" />
			<content type="html"><![CDATA[<p>Возможно очень костыльный вариант, но если я правильно понял вашу цель, то он её сможет достичь:</p><div class="codebox"><pre><code>text := &quot;Устав министерства обязан соблюдать каждый сотрудник&quot;

Fun(text, arg) {
	Loop %arg% {
		if (A_Index = arg) {
			StringReplace, text, text, %A_Space%, `n
			StringReplace, text, text, @#$$, %A_Space%, All
		} else {
			StringReplace, text, text, %A_Space%, @#$$
		}
	}
	return, % text
}

msgbox, % fun(text, 3) ; 3 - номер слова, после которого начинается деление </code></pre></div>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2017-11-20T05:46:30Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=121418#p121418</id>
		</entry>
</feed>
