Автор Тема: Как определить и отобразить символы между двумя одинаковыми знаками  (Прочитано 429 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн dr.room [?]

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

Русское сообщество AutoIt


Помечен как лучший ответ пользователем dr.room Отправлен Январь 15, 2018, 17:32:01

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1421
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
$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Вечно загоните себя в угол, а потом героически разгребаете завалы.
« Последнее редактирование: Январь 15, 2018, 18:51:24 от Alofa »

Оффлайн dr.room [?]

  • Новичок
  • *
  • Сообщений: 268

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



« Последнее редактирование: Январь 15, 2018, 18:12:48 от dr.room »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1421
  • Репутация: 207
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Добавил комментарии.

... Почему параметр StringLen пишет с переменной $i...
Она вобще-то не пишет и тем более не с "$i", а возвращает количество символов строки которая хранится в элементе массива $sSplit[$i]. "$i" - это индекс массива в данном проходе цикла.
« Последнее редактирование: Январь 15, 2018, 19:56:40 от Alofa »

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
1 Ответов
4625 Просмотров
Последний ответ Январь 14, 2011, 12:10:56
от NoMad73rus
4 Ответов
4268 Просмотров
Последний ответ Март 22, 2017, 14:11:44
от mrsoros
18 Ответов
28894 Просмотров
Последний ответ Декабрь 06, 2012, 14:50:33
от Kaster
4 Ответов
2014 Просмотров
Последний ответ Июль 14, 2013, 00:16:00
от Zalman1980
2 Ответов
2227 Просмотров
Последний ответ Сентябрь 30, 2013, 18:34:54
от Zalman1980
0 Ответов
1015 Просмотров
Последний ответ Октябрь 18, 2014, 15:35:38
от Nefakt
5 Ответов
2353 Просмотров
Последний ответ Ноябрь 06, 2014, 21:05:20
от mvalera
0 Ответов
658 Просмотров
Последний ответ Ноябрь 06, 2014, 19:00:01
от madmasles
4 Ответов
1512 Просмотров
Последний ответ Декабрь 04, 2014, 09:37:57
от shyra1976
1 Ответов
2301 Просмотров
Последний ответ Январь 27, 2016, 15:52:21
от InnI