Что нового

Как определить и отобразить символы между двумя одинаковыми знаками

dr.room

Новичок
Сообщения
283
Репутация
0
Версия AutoIt: 3.
AutoIt Version: 3.3.14.2
Описание:
Всем привет
Есть url вида au*oit-scrip*.r*
Нужно найти и отразить в Msgbox фрагмент между двумя ** т.е. двумя звездочками. И если можно - то самый больший из них т.е. содержавший больше символов в сравнении с другими фрагментах
Примечания:
Спасибо
 
A

Alofa

Гость
Код:
$sString = 'au*oit-scrip*.r*'
$sSplit = StringSplit($sString, '*') ; StringSplit разделяет строку на подстроки, и возвращает массив
If Not @error Then
	$iU = 0 ; Переменная маркер максимального размера строки
	For $i = 1 To $sSplit[0] ; Цикл
		$iLen = StringLen($sSplit[$i]) ; Возвращает количество символов строки данного элемента массива $sSplit[]
		If $iLen > $iU Then
;~		Если количество символов строки данного элемента массива $sSplit[] больше максимального числа
;~		хранящегося в переменной $iU, то на данный момент это и есть строка максимальной длинны

			$sString = $sSplit[$i] ; Поскольку переменная $sString нам уже не нужна, то сохраняем в нее эту строку
			$iU = $iLen ; Сохраняем максимальную длинны в маркере $iU
		EndIf
;~		... и идем на следующий виток цикла
	Next
EndIf
MsgBox(262144, Default, $sString)


OffTopic:
Вечно загоните себя в угол, а потом героически разгребаете завалы.
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Alofa. Спасибо
Вечно загоните себя в угол, а потом героически разгребаете завалы.
:smile:
PS
В вашем примере я затрудняюсь разобраться даже - не подскажете как его прочитать понятными словами? Очень хочется понять.
Но некоторые моменты мне понятны:
С помощью StringSplit - разрезаем url на части используя как разделитель *
В цикле проверяем каждый фрагмент: от 1 до количества фрагментов
Получаем длину каждого фрагмента: $iLen = StringLen($sSplit[$i])
Проверяем условие чтобы длина фрагмента не была меньше 0
Вот что не понятно:
Почему параметр StringLen пишет с переменной $i
Не могу понять выражения:
$sString = $sSplit[$i]
$iU = $iLen
Спасибо
 
A

Alofa

Гость
Добавил комментарии.

dr.room сказал(а):
... Почему параметр StringLen пишет с переменной $i...
Она вобще-то не пишет и тем более не с "$i", а возвращает количество символов строки которая хранится в элементе массива $sSplit[$i]. "$i" - это индекс массива в данном проходе цикла.
 
Верх