Что нового

Как красивее оформить однообразные поиск-замену?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Как грамотней оформить такой код?

Код:
For $x = 1 to $gar[0]
$gar[$x]= StringRegExpReplace($gar[$x], "\s+января\s+", ".01.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+февраля\s+", ".02.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+марта\s+", ".03.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+апреля\s+", ".04.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+мая\s+", ".05.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+июня\s+", ".06.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+июля\s+", ".07.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+августа\s+", ".08.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+сентября\s+", ".09.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+октября\s+", ".10.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+ноября\s+", ".11.", 1)
$gar[$x]= StringRegExpReplace($gar[$x], "\s+декабря\s+", ".12.", 1)
Next





Добавлено:
Сообщение автоматически объединено:

Второй вопрос: как избавиться от ContinueLoop и ContinueLoop2 в следующем коде?

Код:
For $x = 1 to $kon[0]
		$kon[$x] = StringRegExpReplace($kon[$x], "^[\(<""].+", "")
		$kon[$x] = StringRegExpReplace($kon[$x], "^(.+?)0?(\d+\.)", "\1\2", 1)
		if Not StringRegExp($kon[$x], "от \d+\.\d+\.\d+ N \S") And StringLen($kon[$x])>1 Then 
			_ArrayAdd($undefKon, $kon[$x])
			ContinueLoop
		EndIf
		if Stringlen($kon[$x])>1 Then 
			for $i = 1 to UBound($sin, 1) - 1
				if StringRegExp($kon[$x], $sin[$i][0]) Then
					$kon[$x] = StringRegExpReplace($kon[$x], $sin[$i][0], $sin[$i][1])
					_ArrayAdd($konReady, $kon[$x])
					ContinueLoop 2
				Else 
					ContinueLoop
				EndIf
			Next
			_ArrayAdd($undefKon, $kon[$x])	
		EndIf
	Next
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
Suppir
А в первом примере что означает переменная $x? Как она меняется в скрипте? Или может быть не меняется?
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
snoitaleR

$x - это просто итератор для перебора массива $gar
 

AZJIO

Меценат
Меценат
Сообщения
2 752
Репутация
1 149
Suppir [?]
Как грамотней оформить такой код?
Код:
$mmm="января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря"
$aMmm = StringSplit( $mmm, "|")
For $x = 1 To 12
$gar[$x]= StringRegExpReplace($gar[$x], '\s+'&$aMmm[$x]&'\s+', '.0'&$x&'.', 1)
Next


Два раза пришлось исправить пример...


Второй вопрос: как избавиться от ContinueLoop и ContinueLoop2 в следующем коде?
Чтобы избавится нужно знать для чего, иначе можно просто убрать команду.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
А можно еще так:
Код:
#include <Array.au3>

Dim $aDate[9] = [9, "1 октября 2010", "21 января 2009", "23 февраля 2008", "19 марта 1999", "11 апреля 2007", "14 мая 2010", "22 июня 2009", "12 декабря 1998"]
$sMon = "января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря"
$aMon = StringSplit($sMon, "|")
For $i = 1 To UBound($aMon) - 1
	For $iI = 1 To UBound($aDate) - 1
		$aDate[$iI] = StringStripWS(StringReplace($aDate[$iI], $aMon[$i], StringFormat(".%02i.", $i)), 8)
	Next
Next
_ArrayDisplay($aDate)
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
вариант AZJIO доходит!
 
Верх