Что нового

_StringStripChars - Функция для очистки указанных символов в строке

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
AutoIt: 3.2.8.1+
Версия: 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
 

HukpoFuJl

AццkuЙ HukpoFuJl
Сообщения
98
Репутация
38
ОффТоп:
Извиняюсь канешн за оффтоп, но почему все пишут описания к своим функциям на английском? Народ всё время ищет где бы почитать ответы на свои вопросы и описания функций из справок на русском, а тут же и сами русскоязычные кодеры свои функции на инглише описывают... Где логика? :whistle:
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
HukpoFuJl [?]
Логика очень простая - я когда писал этот UDF, даже и мысли не мог допустить что как то буду связан с русскоязычным сообществом AutoIt, а писал я функцию для оф. форума.

Описание по русский добавлю чуть позже.
 
Автор
CreatoR

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Небольшое обновление.

+ Добавил опциональный параметр $iGroupChars:
Если этот параметр равен 1 (по умолчанию 0), то все символы в $sSubString группируются и удаляются по отдельности.
 
Верх