<?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=14673&amp;type=atom" />
	<updated>2019-03-26T22:31:19Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=14673</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133191#p133191" />
			<content type="html"><![CDATA[<p>Это действительно круто получилось! Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[Phoenixxx_Czar]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34426</uri>
			</author>
			<updated>2019-03-26T22:31:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133191#p133191</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133190#p133190" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>str := &quot;Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quaerat placeat consequatur itaque quia explicabo magnam molestias! Rerum mollitia dolores suscipit. Alias cupiditate nesciunt doloribus, eaque sint quaerat sed, ullam unde non architecto soluta exercitationem. Aperiam facere, dolorum molestias ipsum illo expedita earum cupiditate, alias exercitationem quas iure recusandae nobis quidem!&quot;
for k, v in splitStringLimit(str, 80)
   msgbox, % v

splitStringLimit(text, limit)
{
   out := []
   while RegExMatch(text, &quot;xO)(?&lt;=\s|^) ( ([^`r`n]){1,&quot; . limit . &quot;} | (?2)+? ) (\s|$)&quot;, match, match ? match.Pos + match.Len : 1)
      out.Push(match[1])
   Return out
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2019-03-26T21:47:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133190#p133190</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133189#p133189" />
			<content type="html"><![CDATA[<p>Когда у меня была задача вывести на экран пользователя все команды которые доступны для его ввода (командный процессор с СМма) я сделал вот так:<br /></p><div class="codebox"><pre><code>
for k in CMD.List {
	if (A_Index = 1) {
		str .=  k 
	} else {
		str .= &quot;, &quot; k &quot;&quot;
	}
}
		
sarr := StrSplit(str, &quot;, &quot;)
for k, v in sarr {
	if (A_Index = 1) {
		st .= &quot;Доступные команды: &quot; v &quot;&quot;
		continue
	}
	
	if (Strsplit(st).MaxIndex() + Strsplit(v).MaxIndex() &lt;= 120) {
		st .= &quot;, &quot; v &quot;&quot;
	} else {
		addmessagetochatwindow2(&quot;{ff0000}&quot;, &quot;[AHK]: {FFFAFA}&quot; . st . &quot;&quot;)
		st := &quot;&quot;
		st .= v
	}
}
addmessagetochatwindow2(&quot;{ff0000}&quot;, &quot;[AHK]: {FFFAFA}&quot; . st . &quot;.&quot;)</code></pre></div><p>Тоже давненько делал но выглядит вроде бы привлекательнее. Если добавить тернарных операторов, а каждый addmessagetochatwindow2 заменить на создание исходного массива то думаю будет нормально.</p>]]></content>
			<author>
				<name><![CDATA[belyankin12]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34408</uri>
			</author>
			<updated>2019-03-26T20:14:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133189#p133189</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133188#p133188" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>str := &quot;Lorem ipsum dolor sit amet consectetur, adipisicing elit. Quaerat placeat consequatur itaque quia explicabo magnam molestias! Rerum mollitia dolores suscipit. Alias cupiditate nesciunt doloribus, eaque sint quaerat sed, ullam unde non architecto soluta exercitationem. Aperiam facere, dolorum molestias ipsum illo expedita earum cupiditate, alias exercitationem quas iure recusandae nobis quidem!&quot;
for k, v in splitStringLimit(str, 80)
	msgbox, % v</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Phoenixxx_Czar]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34426</uri>
			</author>
			<updated>2019-03-26T19:38:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133188#p133188</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133187#p133187" />
			<content type="html"><![CDATA[<p>Есть предложение/строка, допустим она длинной 350 символов, а нам нужно разделить эту большую строку по 80 символов. Данная функция именно для этого. (Она не обрезает слова, именно для этого там сплит строки по пробелам.)</p>]]></content>
			<author>
				<name><![CDATA[Phoenixxx_Czar]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34426</uri>
			</author>
			<updated>2019-03-26T19:33:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133187#p133187</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133186#p133186" />
			<content type="html"><![CDATA[<p>Я не понял, что делает limit:<br /></p><div class="codebox"><pre><code>obj := splitStringLimit(&quot;C:\Program Files\AutoHotkey\AutoHotkey.exe /ErrorStdOut D:\OneDrive\Scripts\_Разработка\New7.ahk&quot;, 1)
for k, v in obj
   MsgBox, % v

splitStringLimit(text, limit)
{
   out := []
   index := 1

   if text Contains % &quot;``n&quot;
   {
      for k, v in StrSplit(text, &quot;``n&quot;)
      {
         for key, value in splitStringLimit(v, limit)
            out[index] := value, index++
      }
      return out
   }

   for k, v in StrSplit(text, A_Space)
   {
      if (A_Index == 1)
         out[index] := v
      Else
      {
         if (StrLen(out[index] &quot; &quot; v) &lt;= limit)
            out[index] .= &quot; &quot; v
         Else
            index++, out[index] := v
      }
   }
   return out
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2019-03-26T19:08:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133186#p133186</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Деление строки по словами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=133185#p133185" />
			<content type="html"><![CDATA[<p>Давненько делал себе функцию, которая делит строку по словам. Хотелось бы ее как-то оптимизировать чтоль.<br /></p><div class="codebox"><pre><code>splitStringLimit(text, limit)
{
	out := []
	index := 1

	if text Contains % &quot;``n&quot;
	{
		for k, v in StrSplit(text, &quot;``n&quot;)
		{
			for key, value in splitStringLimit(v, limit)
				out[index] := value, index++
		}
		return out
	}

	for k, v in StrSplit(text, A_Space)
	{
		if (A_Index == 1)
			out[index] := v
		Else
		{
			if (StrLen(out[index] &quot; &quot; v) &lt;= limit)
				out[index] .= &quot; &quot; v
			Else
				index++, out[index] := v
		}
	}
	return out
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Phoenixxx_Czar]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=34426</uri>
			</author>
			<updated>2019-03-26T18:36:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=133185#p133185</id>
		</entry>
</feed>
