- Сообщения
- 8,673
- Репутация
- 2,486
AutoIt: 3.2.8.1+
Версия: 1.0
Категория: Вспомогательные функции, Строки, Разное
Название: Функция _StringStripChars
Описание: Очистка (удаление/опщипывание) определённых символов в строке
Документация к функции на Русском:
Код: Пример + Функция
Источник: CreatoR, http://www.autoitscript.com/forum/index.php?s=&showtopic=69186&st=3
Версия: 1.0
Категория: Вспомогательные функции, Строки, Разное
Название: Функция _StringStripChars
Описание: Очистка (удаление/опщипывание) определённых символов в строке
Документация к функции на Русском:
Код:
;===============================================================================
; Название функции: _StringStripChars()
; Описание: Очистка (удаление/опщипывание) определённых символов в строке.
;
; Параметры: $sString - Строка для обработки.
; $sSubString - Символы (подстрока) которые следует удалять.
; $iFlag [Опц.] - Определяет поведение процесса опщипывания (см. Возвращаемое значение).
; $iCount [Опц.] - Определяет количество удалений указанных символов в $sSubString (см. Возвращаемое значение).
; $iGroupChars [Опц.] - Если этот параметр равен 1 (по умолчанию 0), то все символы в $sSubString группируются и удаляются по отдельности.
;
; Требования: AutoIt 3.2.8.1 +
;
; Возвращаемое значение: При успешной обработке - Возвращает новую строку после удаления символов в соответствии с флагами $iFlag и $iCount:
; $iFlag = 0 (по умолчанию) - замена символов по всей строке - с этим флагом @extended будет содержать число произведённых замен в строке.
; $iFlag = 1 - замена символов с левой стороны у строки.
; $iFlag = 2 - замена символов с правой стороны у строки.
; $iFlag = 3 - замена символов с обеих сторон у строки.
;
; $iCount = 0 (по умолчанию) - замена всех вхождении символов указанных в $sSubString.
; $iCount > 0 - замена N-ое число (указанное в $iCount) вхождении символов $sSubString.
;
; При неудачной обработке - Если длина указанной строки равняется нулю (0), то @error устанавливается на 1 и возвращается $sString.
;
; Автор(ы): amel27, Мод. от G.Sandler a.k.a MsCreatoR
;===============================================================================
Код: Пример + Функция
Код:
$String = ", ,C:\Some dir\Some File\\,,"
$Strip_Results = _StringStripChars($String, ", \", 3, 0, 1) ;3 = Strip from the both sides
$Strip_Results = StringFormat("$Strip_Results = %s\n@extended = %d", $Strip_Results, @extended)
ConsoleWrite($Strip_Results)
;===============================================================================
; Function Name: _StringStripChars()
; Description: Strip (replace) certain character(s) from the String.
;
; Parameter(s): $sString - String that character(s) will be striped from.
; $sSubString - The character(s) to strip.
; $iFlag [Optional] - Defines the behaviour of stripping process (see Returned value(s)).
; $iCount [Optional] - Defines how many times to perform the strip (see Returned value(s)).
; $iGroupChars [Optional] - If this parameter is 1 (default is 0), then all characters in $sSubString grouped and replaced seperately.
;
; Requirement(s): AutoIt 3.2.8.1 +
;
; Return Value(s): On seccess - Return new string with stripped characters accourding to given $Flag and $iCount:
; $iFlag = 0 (default) replace the character(s) in $sString whetewer it founded - with this flag,
; also @extended is set to number of $sSubString replaces in $sString.
; $iFlag = 1 replace the character(s) from the Left side of $sString.
; $iFlag = 2 replace the character(s) from the Right side of $sString.
; $iFlag = 3 replace the character(s) from the Bouth sides of $sString.
;
; $iCount = 0 (default) replace all $sSubString char(s).
; $iCount > 0 replace that much $sSubString char(s).
;
; On failure - If lenght of given string is equel 0, then @error set to 1 and returned initial $sString.
;
; Author(s): amel27, mod. by G.Sandler a.k.a MsCreatoR
;===============================================================================
Func _StringStripChars($sString, $sSubString, $iFlag = 0, $iCount = 0, $iGroupChars = 0)
If StringLen($sString) = 0 Then Return SetError(1, 0, $sString)
Local $sGroupChar_a = '(', $sGroupChar_b = ')'
If $iCount < 0 Then Local $sGroupChar_a = '[', $sGroupChar_b = ']'
$sSubString = StringRegExpReplace($sSubString, '([][{}()|.?+*\\^\$])', '\\\1')
If $iGroupChars = 1 Then $sSubString = '[' & $sSubString & ']'
Local $sPattern = '(?i)' & $sGroupChar_a & $sSubString & $sGroupChar_b
Local $sPattern_Count = '{1,' & $iCount & '}'
If $iCount <= 0 Then $sPattern_Count = '+'
If $iFlag <> 0 Then $iCount = 0
If $iFlag = 1 Then $sPattern = '(?i)^' & $sGroupChar_a & $sSubString & $sGroupChar_b & $sPattern_Count
If $iFlag = 2 Then $sPattern = '(?i)' & $sGroupChar_a & $sSubString & $sGroupChar_b & $sPattern_Count & '$'
If $iFlag = 3 Then $sPattern = '(?i)^' & $sGroupChar_a & $sSubString & $sGroupChar_b & $sPattern_Count & '|' & _
$sGroupChar_a & $sSubString & $sGroupChar_b & $sPattern_Count & '$'
$sString = StringRegExpReplace($sString, $sPattern, '', $iCount)
Return SetExtended(@extended, $sString)
EndFunc
Источник: CreatoR, http://www.autoitscript.com/forum/index.php?s=&showtopic=69186&st=3