HukpoFuJl
AццkuЙ HukpoFuJl
- Сообщения
- 98
- Репутация
- 38
AutoIt: 3.2.5.4 и далее (возможно и ранее)
Версия: v1.1
Категория: Данные, строки
[box title=Функция:]
Возвращает найденную подстроку в строке по заданным граничащим подстрокам.
StringFindSE ($string[,$start[,$end[,$start_occ[,$end_occ[,$cas]]]]])
Параметры функции:
Возвращаемые значения:
При успешном выполнении возвращает искомую подстроку.
Примечание: Поиск подстроки $end начинается с символа, на котором заканчивается подстрока $start
[/box]
Примеры:
Прошлые версии:
[box title=ЧенжЛог]
Август 13, 2010 v1.1 добавлена возможность указать значения $start и $end пустыми, соответственно объявив начало и конец строки.
Июль 31, 2010 v1.1 добавлена возможность выбора номера совпадения $start и $end и чувствительности к регистру.
Июль 16, 2010 v1.0 первая версия[/box]
Источник: Эта страница и является первоисточником.
Автор: HukpoFuJl
Версия: v1.1
Категория: Данные, строки
[box title=Функция:]
Возвращает найденную подстроку в строке по заданным граничащим подстрокам.
StringFindSE ($string[,$start[,$end[,$start_occ[,$end_occ[,$cas]]]]])
Параметры функции:
$string | Строка в которой будет происходить поиск |
$start | Опционально. Подстрока находящаяся до искомой (если значение пустое(по умолчанию) - то подстрока считается началом строки) |
$end | Опционально. Подстрока находящаяся после искомой (если значение пустое(по умолчанию) - то подстрока считается концом строки) |
$start_occ | Опционально. Номер искомого вхождения подстроки $start (по умолчанию 1). Отрицательные значения означают поиск с конца строки. |
$end_occ | Опционально. Номер искомого вхождения подстроки $end (по умолчанию 1). Отрицательные значения означают поиск с конца строки. |
$cas | Опционально. Режим учета регистра написания. 0 = не зависит от регистра написания согласно языку пользователя (по умолчанию) 1 = зависит от регистра написания 2 = не зависит от регистра написания согласно базовому/наиболее быстрому сравнению |
При успешном выполнении возвращает искомую подстроку.
Примечание: Поиск подстроки $end начинается с символа, на котором заканчивается подстрока $start
Код:
Func StringFindSE($string,$start="",$end="",$start_occ=1,$end_occ=1,$cas=0)
Local $source_start,$source_count,$source
If $start <> '' Then
Local $st_count
$st_count = StringSplit($start,'')
$source_start = StringInStr($string,$start,$cas,$start_occ) + $st_count[0]
Else
$source_start = 1
EndIf
If $end <> '' Then
$source_count = StringInStr($string,$end,$cas,$end_occ,$source_start) - $source_start
Else
$source_count = -1
EndIf
Return StringMid ($string,$source_start,$source_count)
EndFunc
Примеры:
Код:
$string = "В этой строке мы будем искать слово между 'мы ' и ' искать'."
$start = "мы "
$end = " искать"
$source = StringFindSE($string,$start,$end)
MsgBox(0,"Найдено:",$source)
Код:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
GUICreate("Поиск", 305, 145, 489, 259)
GUICtrlCreateLabel("Сдесь мы будем искать:", 8, 5, 129, 17)
$eString = GUICtrlCreateEdit("В этой строке мы будем искать слово между 'мы ' и ' искать'.", 8, 24, 289, 49, BitOR($ES_AUTOVSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlCreateLabel("Мы будем искать между", 8, 80, 129, 17)
$iSourceS = GUICtrlCreateInput("мы ", 136, 80, 65, 21)
GUICtrlCreateLabel("и", 208, 80, 10, 17)
$iSourceE = GUICtrlCreateInput(" искать", 224, 80, 73, 21)
$bFind = GUICtrlCreateButton("Искать", 88, 112, 99, 25)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bFind
$string = GUICtrlRead($eString)
$start = GUICtrlRead($iSourceS)
$end = GUICtrlRead($iSourceE)
$source = StringFindSE($string,$start,$end)
MsgBox(0,"Найдено:",$source)
EndSwitch
WEnd
Прошлые версии:
Код:
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
; Функция возвращает найденную подстроку
; в строке по заданным граничащим подстрокам.
;
; $string = Строка в которой будет происходить поиск
; $start = Подстрока находящаяся до искомой
; $end = Подстрока находящаяся после искомой
; $start_occ = Номер искомого вхождения подстроки $start (по умолчанию 1)
; Отрицательные значения означают поиск справа.
; $end_occ = Номер искомого вхождения подстроки $end (по умолчанию 1)
; Отрицательные значения означают поиск справа.
; $cas = Режим учета регистра написания.
; 0 = не зависит от регистра написания согласно языку пользователя (по умолчанию)
; 1 = зависит от регистра написания
; 2 = не зависит от регистра написания согласно базовому/наиболее быстрому сравнению
;
; Возвращаемое значение: искомая подстрока
;
; Примечание: Поиск подстроки $end начинается с символа,
; на котором заканчивается подстрока $start
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Func StringFindSE($string,$start,$end,$start_occ=1,$end_occ=1,$cas=0)
Local $st_count,$source_start,$source_count,$source
$st_count = StringSplit($start,"")
$source_start = StringInStr($string,$start,$cas,$start_occ) + $st_count[0]
$source_count = StringInStr($string,$end,$cas,$end_occ,$source_start) - $source_start
$source = StringMid ($string,$source_start,$source_count)
Return $source
EndFunc
Код:
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;Функция возвращает найденную подстроку
;в строке по заданным граничащим подстрокам.
;
;$string = Строка в которой будет происходить поиск
;$start = Подстрока находящаяся до искомой
;$end = Подстрока находящаяся после искомой
;
;Возвращаемое значение: искомая подстрока
;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Func StringFindSE($string,$start,$end)
Local $st_count,$source_start,$source_count,$source
$st_count = StringSplit($start,"")
$source_start = StringInStr($string,$start) + $st_count[0]
$source_count = StringInStr($string,$end,0,1,$source_start) - $source_start
$source = StringMid ($string,$source_start,$source_count)
;~ ConsoleWrite(@CRLF&"Первый сивол: "&$source_start&" Последний символ: "&$source_count&" Результат: "&$source&@CRLF)
Return $source
EndFunc
[box title=ЧенжЛог]
Август 13, 2010 v1.1 добавлена возможность указать значения $start и $end пустыми, соответственно объявив начало и конец строки.
Июль 31, 2010 v1.1 добавлена возможность выбора номера совпадения $start и $end и чувствительности к регистру.
Июль 16, 2010 v1.0 первая версия[/box]
Источник: Эта страница и является первоисточником.
Автор: HukpoFuJl
От CreatoR'a:
Поиск первого совпадения в строке:
Поиск последнего совпадения встроке:
Аналогичный способ в библиотеке String.au3:
Возвращает массив совпадений:
Ссылка: _StringBetween
Поиск первого совпадения в строке:
Код:
$source = StringRegExpReplace($string, '(?s).*?\Q' & $start & '\E(.*?)\Q' & $end & '\E.*', '$1')
Поиск последнего совпадения встроке:
Код:
$source = StringRegExpReplace($string, '(?s).*\Q' & $start & '\E(.*?)\Q' & $end & '\E.*', '$1')
Аналогичный способ в библиотеке String.au3:
Возвращает массив совпадений:
Код:
$source = _StringBetween($string, $start, $end [, $сas = -1])