Snippets ( AutoIt String ): Difference between revisions

From AutoIt Wiki
Jump to navigation Jump to search
No edit summary
(Added snippets _StringGetDigitLeft and _StringGetDigitRight.)
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
__TOC__
__TOC__
[[category:Snippets]]
[[category:Snippets]]


{{Snippet Credit Header}}
{{Snippet Credit Header}}


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringEqualSplit() ~ Author - [http://www.autoitscript.com/forum/user/15769-czardas/ czardas] '''</blockquote> =====
== _StringEqualSplit ==
 
{{Snippet Header
| AuthorURL = 15769-czardas
| AuthorName = czardas
}}
 
<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
#include <Array.au3>
#include <Array.au3>
Global $aArray = _StringEqualSplit("abcdefghijklmnopqrstuvwxyz", 5)
Local $aArray = _StringEqualSplit("12345678910", 3)
_ArrayDisplay($aArray)
_ArrayDisplay($aArray)


Func _StringEqualSplit($sString, $iNumChars)
Func _StringEqualSplit($sString, $iNumChars)
     If (Not IsString($sString)) Or $sString = "" Then Return SetError(1, 0, 0)
     If Not IsString($sString) Or $sString = "" Then Return SetError(1, 0, 0)
     If (Not IsInt($iNumChars)) Or $iNumChars < 1 Then Return SetError(2, 0, 0)
     If Not IsInt($iNumChars) Or $iNumChars < 1 Then Return SetError(2, 0, 0)
     Return StringRegExp($sString, "(?s).{1," & $iNumChars & "}", 3)
     Return StringRegExp($sString, "(?s).{1," & $iNumChars & "}", 3)
EndFunc
EndFunc
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringGetChrCount() ~ Author - [http://www.autoitscript.com/forum/user/52-geosoft/ GEOSoft] '''</blockquote> =====
[[#top | Return To Contents]]
 
== _StringGetChrCount ==
 
{{Snippet Header
| AuthorURL = 52-geosoft
| AuthorName = GEOSoft
| Desc = Check how many times the word 'test' appears in the string. 1 = Case-sensitive or 0 = Non Case-sensitive.
}}


<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
Line 32: Line 46:
EndFunc  ;==>_StringGetChrCount
EndFunc  ;==>_StringGetChrCount
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringEqualSplit() ~ Author - [http://www.autoitscript.com/forum/user/35302-guinness/ guinness] '''</blockquote> =====
[[#top | Return To Contents]]
<syntaxhighlight lang="autoit">
 
#include <Array.au3>
== _StringEqualSplit ==
 
{{Snippet Header
| AuthorURL = 15769-czardas
| AuthorName = czardas
| ModifierURL = 35302-guinness
| ModifierName = guinness
| Desc = Splits a string into an equal number of characters. The 0th index returns the number of items.
}}
 
<syntaxhighlight lang="autoit">#include <Array.au3>
#include <String.au3>


Local $aArray = _StringEqualSplit('abcdefghijklmnopqrstuvwxyz', 5)
Local $aSplitEqual = _StringEqualSplit('abcdefghijklmnopqrstuvwxyz', 5)
_ArrayDisplay($aArray)
_ArrayDisplay($aSplitEqual)


; By czardas & modified by guinness >> http://www.autoitscript.com/forum/topic/139260-autoit-snippets/page__st__20#entry992149
; By czardas & modified by guinness >> http://www.autoitscript.com/forum/topic/139260-autoit-snippets/page__st__20#entry992149
; Version: 1.00. AutoIt: V3.3.8.1
; Version: 1.10. AutoIt: V3.3.8.1
; Splits a string into an equal number of characters. The 0th index returns the number of items.
; Splits a string into an equal number of characters. The 0th index returns the number of items.
Func _StringEqualSplit($sString, $iNumChars)
Func _StringEqualSplit($sString, $iNumChars)
    If (Not IsString($sString)) Or $sString = '' Then
If IsString($sString) = 0 Or $sString == '' Then
        Return SetError(1, 0, 0)
Return SetError(1, 0, 0)
    EndIf
EndIf
    If (Not IsInt($iNumChars)) Or $iNumChars < 1 Then
 
        Return SetError(2, 0, 0)
If IsInt($iNumChars) = 0 Or $iNumChars < 1 Then
    EndIf
Return SetError(2, 0, 0)
    Local $tBuffer = DllStructCreate('char[' & $iNumChars & ']')
EndIf
    DllCall('msvcrt.dll', 'ptr:cdecl', 'memset', 'ptr', DllStructGetPtr($tBuffer), 'int', 65, 'int', $iNumChars) ; By Zedna (StringRepeat)
 
    Local $aArray = StringRegExp(DllStructGetData($tBuffer, 1) & $sString, '(?s).{1,' & $iNumChars & '}', 3)
Local $aReturn = StringRegExp(_StringRepeat('0', 5) & $sString, '(?s).{1,' & $iNumChars & '}', 3)
    $aArray[0] = Ubound($aArray, 1) - 1
$aReturn[0] = UBound($aReturn, 1) - 1
    Return $aArray
Return $aReturn
EndFunc  ;==>_StringEqualSplit
EndFunc  ;==>_StringEqualSplit</syntaxhighlight>
</syntaxhighlight>
 
[[#top|Return To Contents]]
[[#top | Return To Contents]]
 
== _StringIsNum ==
 
{{Snippet Header
| AuthorURL = 38301-smartee
| AuthorName = smartee
}}


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringIsNum() ~ Author - [http://www.autoitscript.com/forum/user/38301-smartee/ smartee] '''</blockquote> =====
<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
ConsoleWrite(StringIsNum('Example') & @CRLF)
ConsoleWrite(StringIsNum('Example') & @CRLF)
Line 70: Line 100:
EndFunc  ;==>StringIsNum
EndFunc  ;==>StringIsNum
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringRemoveLine() ~ Author - [http://www.autoitscript.com/forum/user/4813-smoke-n/ SmOke_N] '''</blockquote> =====
[[#top | Return To Contents]]
 
== _StringRemoveLine ==
 
{{Snippet Header
| AuthorURL = 4813-smoke-n
| AuthorName = SmOke_N
}}


<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
Global $string = 'This is an example' & @CRLF & 'Of deleting a line' & @CRLF & 'If you know at least the beginning text of the line.'
Global $string = 'This is an example' & @CRLF & 'Of deleting a line' & @CRLF & 'If you know at least the beginning text of the line.'
MsgBox(0, 'Original', $string)
MsgBox(0, 'Original', $string)
Global $deleteline = _StringRemoveLine($string, 'Of deleting')
Global $deleteline = _StringRemoveLine($string, 'Of deleting')
MsgBox(0, 'Deleted Line', $deleteline)
MsgBox(0, 'Deleted Line', $deleteline)


Line 90: Line 129:
EndFunc ;==>_StringRemoveLine()
EndFunc ;==>_StringRemoveLine()
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringReplaceBlank() ~ Author - [http://www.autoitscript.com/forum/user/4813-smoke-n/ SmOke_N] '''</blockquote> =====
[[#top | Return To Contents]]
 
== _StringReplaceBlank ==
 
{{Snippet Header
| AuthorURL = 4813-smoke-n
| AuthorName = SmOke_N
| Desc = Remove blank lines from a File
}}


<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
Line 99: Line 145:
"With Empty Lines" & @CRLF & @CRLF & _
"With Empty Lines" & @CRLF & @CRLF & _
"Please Remove those empty lines"
"Please Remove those empty lines"
MsgBox(4096, "Before", $sString)
MsgBox(4096, "Before", $sString)
$sString = _StringReplaceBlank($sString, 1)
$sString = _StringReplaceBlank($sString, 1)
MsgBox(4096, "Replaced: " & @extended & " lines.", $sString)
MsgBox(4096, "Replaced: " & @extended & " lines.", $sString)


Line 107: Line 156:
$sSpaces = "\s*"
$sSpaces = "\s*"
EndIf
EndIf
$sString = StringRegExpReplace($sString, "(?s)\r\n" & $sSpaces & "\r\n", @CRLF)
$sString = StringRegExpReplace($sString, "(?s)\r\n" & $sSpaces & "\r\n", @CRLF)
If @extended Then
If @extended Then
Return SetError(0, @extended, $sString)
Return SetError(0, @extended, $sString)
EndIf
EndIf
Return SetError(1, 0, $sString)
Return SetError(1, 0, $sString)
EndFunc  ;==>_StringReplaceBlank
EndFunc  ;==>_StringReplaceBlank
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringTrimLeftIsEqual() ~ Author - [http://www.autoitscript.com/forum/user/35302-guinness/ guinness] '''</blockquote> =====
[[#top | Return To Contents]]
 
== _StringTrimLeftIsEqual ==
 
{{Snippet Header
| AuthorURL = 35302-guinness
| AuthorName = guinness
| Desc = Strip a character/word from the leftmost part of a string.
}}
 
<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
ConsoleWrite(_StringTrimLeftIsEqual('C:\Test', 'C:\') & @CRLF) ; Returns Test as the string 'C:\' is stripped from the left.
ConsoleWrite(_StringTrimLeftIsEqual('C:\Test', 'C:\') & @CRLF) ; Returns Test as the string 'C:\' is stripped from the left.
Line 129: Line 189:
EndFunc  ;==>_StringTrimLeftIsEqual
EndFunc  ;==>_StringTrimLeftIsEqual
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]


===== <blockquote style="background-color:white; padding:1em; border:2px solid #8FBC8F">''' _StringTrimRightIsEqual() ~ Author - [http://www.autoitscript.com/forum/user/35302-guinness/ guinness] '''</blockquote> =====
[[#top | Return To Contents]]
 
== _StringTrimRightIsEqual ==
 
{{Snippet Header
| AuthorURL = 35302-guinness
| AuthorName = guinness
| Desc = Strip a character/word from the rightmost part of a string.
}}
 
<syntaxhighlight lang="autoit">
<syntaxhighlight lang="autoit">
ConsoleWrite(_StringTrimRightIsEqual('C:\Test', 'Test') & @CRLF) ; Returns C:\ as the string 'Test' is stripped from the right.
ConsoleWrite(_StringTrimRightIsEqual('C:\Test', 'Test') & @CRLF) ; Returns C:\ as the string 'Test' is stripped from the right.
Line 144: Line 212:
EndFunc  ;==>_StringTrimRightIsEqual
EndFunc  ;==>_StringTrimRightIsEqual
</syntaxhighlight>
</syntaxhighlight>
[[#top|Return To Contents]]
 
[[#top | Return To Contents]]
 
== StringTrimLeftUntil ==
 
{{Snippet Header
| AuthorURL = 89462-TheDcoder
| AuthorName = TheDcoder
| Desc = Trim a string left until it reaches the delimiter character.
}}
 
<syntaxhighlight lang="autoit">
; #FUNCTION# ====================================================================================================================
; Name ..........: StringTrimLeftUntil
; Description ...: Trim a string left until it reaches the delimiter charecter
; Syntax ........: StringTrimLeftUntil($sDelimiter, $sString)
; Parameters ....: $sDelimiter          - Charecter(s) to trim until
;                  $sString            - A string value.
;                  $iOccurrence        - Trim until which occurrence of the delimiter [Default = 1st occurrence]
; Return values .: Trimmed String
; Author ........: TheDcoder
; Modified ......: Thanks to water for the Idea
; Remarks .......: This function is not case sensitive meaning "DeLiMiTeR" is same as "Delimiter"
; Related .......: StringTrimLeft
; Link ..........: https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1250764
; Example .......: No
; ===============================================================================================================================
Func StringTrimLeftUntil($sDelimiter, $sString, $iOccurrence = 1)
$iDelimiterLen = StringLen($sDelimiter)
    $sString = StringTrimLeft($sString, StringInStr($sString, $sDelimiter, 2, $iOccurrence) + ($iDelimiterLen - 1)) ; This is a little hard to explain:
#cs =========================================================================================================================================|
| What it does is:                                                                                                                          |
| 1. Find the delimiter's position in the string (StringInStr)                                                                              |
| 2. Add delimiter's Length to delimiters position (I remove 1 for delimiter's length because StringInStr already contains that 1 charecter) |
| 3. Trim the string :)                                                                                                                      |
#ce =========================================================================================================================================|
    Return $sString ; Return the String :D
EndFunc  ;==>StringTrimLeftUntil
</syntaxhighlight>
 
[[#top | Return To Contents]]
 
== StringTrimRightUntil ==
 
{{Snippet Header
| AuthorURL = 89462-TheDcoder
| AuthorName = TheDcoder
| Desc = Trim a string right until it reaches the delimiter character.
}}
 
<syntaxhighlight lang="autoit">
; #FUNCTION# ====================================================================================================================
; Name ..........: StringTrimRightUntil
; Description ...: Trim a string right until it reaches the delimiter charecter
; Syntax ........: StringTrimRightUntil($sDelimiter, $sString)
; Parameters ....: $sDelimiter          - Charecter(s) to trim until
;                  $sString            - A string value.
;                  $iOccurrence        - Trim until which occurrence of the delimiter [Default = 1st occurrence]
; Return values .: Trimmed String
; Author ........: TheDcoder
; Modified ......: Me
; Remarks .......: This function is not case sensitive meaning "DeLiMiTeR" is same as "Delimiter"
; Related .......: StringTrimRight
; Link ..........: https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1250764
; Example .......: No
; ===============================================================================================================================
Func StringTrimRightUntil($sDelimiter, $sString, $iOccurrence = 1)
$iStringLen = StringLen($sString) ; We need string's len
$iDelimiterLen = StringLen($sDelimiter) ; We need delimiter's len too
    $sString = StringTrimRight($sString, ($iStringLen - StringInStr($sString, $sDelimiter, 2, $iOccurrence)) + $iDelimiterLen) ; Explanation:
#cs ============================================================================================|
| 1. Find delimiters postition                                                                  |
| 2. Remove String's len from delimiters position to invert the trimming process (to the right) |
| 3. Add the delimiter's len to trim the delimiter                                              |
| 4. Trim the string!!!                                                                        |
#ce ============================================================================================|
    Return $sString ; Return the String
EndFunc  ;==>StringTrimRightUntil
</syntaxhighlight>
 
 
 
== StringBetween ==
 
{{Snippet Header
| AuthorURL = 77301-trong
| AuthorName = Trong
| Desc = Find strings between two string delimiters.
}}
 
<syntaxhighlight lang="autoit">
 
; EG---------------------------------------------- -
Local $sString = StringBetween("<test>C</test><test>B</test><test>A</test>", "<test>", "</test>")
MsgBox(0, "StringBetween", "Strings between <test> and </test>" & @CRLF & "Is: " & $sString & @CRLF & "In text: <test>C</test><test>B</test><test>A</test>")
; ------------------------------------------------ -
 
; #FUNCTION# ====================================================================================================================
; Name ..........: StringBetween
; Description ...: Find strings between two string delimiters
; Syntax ........: StringBetween($sString, $sStart, $sEnd)
; Parameters ....: $sString        - The string to search.
; Parameters ....: $sStart          - The beginning of the string to find.
;                  $sEnd            - The end of the string to find.
; Return values .: Success: a found string
;                  Failure: sets the @error flag to non-zero.
;                  @error: 1 - No strings found.
; Author ........: Trong
; Related .......: _StringBetween
; Link ..........: https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1290019
; Example .......: Yes
; ===============================================================================================================================
 
Func StringBetween($sString, $sStart, $sEnd)
$sString = StringReverse(StringTrimLeft($sString, StringInStr($sString, $sStart) + StringLen($sStart) - 1))
$sString = StringReverse(StringTrimLeft($sString, StringInStr($sString, StringReverse($sEnd)) + StringLen($sEnd) - 1))
Return SetError(StringLen($sString) < 1, 0, $sString)
EndFunc  ;==>StringBetween
 
</syntaxhighlight>
 
[[#top | Return To Contents]]
 
== _StringGetDigitLeft ==
 
{{Snippet Header
| AuthorURL = 102275-donchunior
| AuthorName = DonChunior
| Desc = Returns the string on the left side of a search string consisting of digits only.
}}
 
<syntaxhighlight lang="autoit">
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7
 
; Returns the string on the left side of a search string consisting of digits only
 
ConsoleWrite(_StringGetDigitLeft("1234abcd5678") & @CRLF) ; Results in "1234"
 
Func _StringGetDigitLeft(Const ByRef $sString)
    If Not IsString($sString) Then
        Return SetError(1, 0, "")
    EndIf
 
    Local $iLength = StringLen($sString)
    Local $sCheckString = ""
    Local $sLeft = ""
 
    For $i = 1 To $iLength
        $sCheckString = StringLeft($sString, $i)
        If StringIsDigit($sCheckString) Then
            $sLeft = $sCheckString
        Else
            ExitLoop
        EndIf
    Next
 
    Return $sLeft
EndFunc  ;==>_StringGetDigitLeft
</syntaxhighlight>
 
[[#top | Return To Contents]]
 
== _StringGetDigitRight ==
 
{{Snippet Header
| AuthorURL = 102275-donchunior
| AuthorName = DonChunior
| Desc = Returns the string on the right side of a search string consisting of digits only.
}}
 
<syntaxhighlight lang="autoit">
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7
 
; Returns the string on the right side of a search string consisting of digits only
 
ConsoleWrite(_StringGetDigitRight("1234abcd5678") & @CRLF) ; Results in "5678"
 
Func _StringGetDigitRight(Const ByRef $sString)
    If Not IsString($sString) Then
        Return SetError(1, 0, "")
    EndIf
 
    Local $iLength = StringLen($sString)
    Local $sCheckString = ""
    Local $sRight = ""
 
    For $i = $iLength To 1 Step -1
        $sCheckString = StringRight($sString, $iLength - $i + 1)
        If StringIsDigit($sCheckString) Then
            $sRight = $sCheckString
        Else
            ExitLoop
        EndIf
    Next
 
    Return $sRight
EndFunc  ;==>_StringGetDigitRight
</syntaxhighlight>
 
[[#top | Return To Contents]]

Latest revision as of 11:59, 19 October 2020


Please always credit an author in your script if you use their code. It is only polite.


_StringEqualSplit

Author: czardas








#include <Array.au3>
Local $aArray = _StringEqualSplit("12345678910", 3)
_ArrayDisplay($aArray)

Func _StringEqualSplit($sString, $iNumChars)
    If Not IsString($sString) Or $sString = "" Then Return SetError(1, 0, 0)
    If Not IsInt($iNumChars) Or $iNumChars < 1 Then Return SetError(2, 0, 0)
    Return StringRegExp($sString, "(?s).{1," & $iNumChars & "}", 3)
EndFunc

Return To Contents

_StringGetChrCount

Author: GEOSoft







Check how many times the word 'test' appears in the string. 1 = Case-sensitive or 0 = Non Case-sensitive.


; Check how many times the word 'test' appears in the string. 1 = Case-sensitive or 0 = Non Case-sensitive.
ConsoleWrite(_StringGetChrCount("test teste test", "TEST", 0) & @CRLF)

Func _StringGetChrCount($sStr, $sChr, $iCase = 0)
	If $iCase <> 0 Then
		$iCase = 1
	EndIf
	StringReplace($sStr, $sChr, $sChr, 0, $iCase)
	Return @extended
EndFunc   ;==>_StringGetChrCount

Return To Contents

_StringEqualSplit

Author: czardas




Modified: guinness




Splits a string into an equal number of characters. The 0th index returns the number of items.


#include <Array.au3>
#include <String.au3>

Local $aSplitEqual = _StringEqualSplit('abcdefghijklmnopqrstuvwxyz', 5)
_ArrayDisplay($aSplitEqual)

; By czardas & modified by guinness >> http://www.autoitscript.com/forum/topic/139260-autoit-snippets/page__st__20#entry992149
; Version: 1.10. AutoIt: V3.3.8.1
; Splits a string into an equal number of characters. The 0th index returns the number of items.
Func _StringEqualSplit($sString, $iNumChars)
	If IsString($sString) = 0 Or $sString == '' Then
		Return SetError(1, 0, 0)
	EndIf

	If IsInt($iNumChars) = 0 Or $iNumChars < 1 Then
		Return SetError(2, 0, 0)
	EndIf

	Local $aReturn = StringRegExp(_StringRepeat('0', 5) & $sString, '(?s).{1,' & $iNumChars & '}', 3)
	$aReturn[0] = UBound($aReturn, 1) - 1
	Return $aReturn
EndFunc   ;==>_StringEqualSplit

Return To Contents

_StringIsNum

Author: smartee








ConsoleWrite(StringIsNum('Example') & @CRLF)
ConsoleWrite(StringIsNum('123456') & @CRLF)
ConsoleWrite(StringIsNum('Example & 123456') & @CRLF)

Func StringIsNum($sString)
    Return StringRegExp($sString, "^([0-9]*(\.[0-9]+){1}|[0-9]+(\.[0-9]*){0,1})$") = 1
EndFunc   ;==>StringIsNum

Return To Contents

_StringRemoveLine

Author: SmOke_N








Global $string = 'This is an example' & @CRLF & 'Of deleting a line' & @CRLF & 'If you know at least the beginning text of the line.'

MsgBox(0, 'Original', $string)

Global $deleteline = _StringRemoveLine($string, 'Of deleting')

MsgBox(0, 'Deleted Line', $deleteline)

Func _StringRemoveLine($hFile, $sDelete)
    If FileExists($hFile) Then $hFile = FileRead($hFile);Remove If FileExists($hFile) Then << only
    Local $nSNS = StringInStr($hFile, @CRLF & $sDelete) - 1
    Local $sSFH = StringLeft($hFile, $nSNS)
    Local $sRL = StringTrimLeft($hFile, StringLen($sSFH) + 2)
    Local $sLLEN = StringLen(StringLeft($sRL, StringInStr($sRL, @CRLF)))
    If Not $sLLEN Then $sLLEN = StringLen($sRL)
    Return $sSFH & StringTrimLeft($hFile, $sLLEN + $nSNS + 2)
EndFunc ;==>_StringRemoveLine()

Return To Contents

_StringReplaceBlank

Author: SmOke_N







Remove blank lines from a File


; Remove blank lines from a File
Local $sString = "I am a string" & @CRLF & @CRLF & _
		"With Empty Lines" & @CRLF & @CRLF & _
		"Please Remove those empty lines"

MsgBox(4096, "Before", $sString)

$sString = _StringReplaceBlank($sString, 1)

MsgBox(4096, "Replaced: " & @extended & " lines.", $sString)

Func _StringReplaceBlank($sString, $sSpaces = "")
	If $sSpaces Then
		$sSpaces = "\s*"
	EndIf

	$sString = StringRegExpReplace($sString, "(?s)\r\n" & $sSpaces & "\r\n", @CRLF)

	If @extended Then
		Return SetError(0, @extended, $sString)
	EndIf

	Return SetError(1, 0, $sString)
EndFunc   ;==>_StringReplaceBlank

Return To Contents

_StringTrimLeftIsEqual

Author: guinness







Strip a character/word from the leftmost part of a string.


ConsoleWrite(_StringTrimLeftIsEqual('C:\Test', 'C:\') & @CRLF) ; Returns Test as the string 'C:\' is stripped from the left.
ConsoleWrite(_StringTrimLeftIsEqual('C:\Test\', 'C') & @CRLF) ; Returns :\Test as the character 'C' is stripped from the left.
ConsoleWrite(_StringTrimLeftIsEqual('C:\Test\', 'Test') & @CRLF) ; Returns the initial string as the string 'Test' was not found to the leftmost part of the string.

; Version: 1.00. AutoIt: V3.3.8.1
; Strip a character/word from the leftmost part of a string.
Func _StringTrimLeftIsEqual($sString, $sStringTrim)
    Local $aStringTrim[2] = [0, StringLen($sStringTrim)]
    Return StringTrimLeft($sString, $aStringTrim[Number(StringLeft($sString, $aStringTrim[1]) == $sStringTrim)])
EndFunc   ;==>_StringTrimLeftIsEqual

Return To Contents

_StringTrimRightIsEqual

Author: guinness







Strip a character/word from the rightmost part of a string.


ConsoleWrite(_StringTrimRightIsEqual('C:\Test', 'Test') & @CRLF) ; Returns C:\ as the string 'Test' is stripped from the right.
ConsoleWrite(_StringTrimRightIsEqual('C:\Test\', '\') & @CRLF) ; Returns C:\Test as the character '\' is stripped from the right.
ConsoleWrite(_StringTrimRightIsEqual('C:\Test\', 'Test') & @CRLF) ; Returns the initial string as the string 'Test' was not found to the rightmost part of the string.

; Version: 1.00. AutoIt: V3.3.8.1
; Strip a character/word from the rightmost part of a string.
Func _StringTrimRightIsEqual($sString, $sStringTrim)
    Local $aStringTrim[2] = [0, StringLen($sStringTrim)]
    Return StringTrimRight($sString, $aStringTrim[Number(StringRight($sString, $aStringTrim[1]) == $sStringTrim)])
EndFunc   ;==>_StringTrimRightIsEqual

Return To Contents

StringTrimLeftUntil

Author: TheDcoder







Trim a string left until it reaches the delimiter character.


; #FUNCTION# ====================================================================================================================
; Name ..........: StringTrimLeftUntil
; Description ...: Trim a string left until it reaches the delimiter charecter
; Syntax ........: StringTrimLeftUntil($sDelimiter, $sString)
; Parameters ....: $sDelimiter          - Charecter(s) to trim until
;                  $sString             - A string value.
;                  $iOccurrence         - Trim until which occurrence of the delimiter [Default = 1st occurrence]
; Return values .: Trimmed String
; Author ........: TheDcoder
; Modified ......: Thanks to water for the Idea 
; Remarks .......: This function is not case sensitive meaning "DeLiMiTeR" is same as "Delimiter"
; Related .......: StringTrimLeft
; Link ..........: https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1250764
; Example .......: No
; ===============================================================================================================================
Func StringTrimLeftUntil($sDelimiter, $sString, $iOccurrence = 1)
	$iDelimiterLen = StringLen($sDelimiter)
    $sString = StringTrimLeft($sString, StringInStr($sString, $sDelimiter, 2, $iOccurrence) + ($iDelimiterLen - 1)) ; This is a little hard to explain:
	#cs =========================================================================================================================================|
	| What it does is:                                                                                                                           |
	| 1. Find the delimiter's position in the string (StringInStr)                                                                               |
	| 2. Add delimiter's Length to delimiters position (I remove 1 for delimiter's length because StringInStr already contains that 1 charecter) |
	| 3. Trim the string :)                                                                                                                      |
	#ce =========================================================================================================================================|
    Return $sString ; Return the String :D
EndFunc   ;==>StringTrimLeftUntil

Return To Contents

StringTrimRightUntil

Author: TheDcoder







Trim a string right until it reaches the delimiter character.


; #FUNCTION# ====================================================================================================================
; Name ..........: StringTrimRightUntil
; Description ...: Trim a string right until it reaches the delimiter charecter
; Syntax ........: StringTrimRightUntil($sDelimiter, $sString)
; Parameters ....: $sDelimiter          - Charecter(s) to trim until
;                  $sString             - A string value.
;                  $iOccurrence         - Trim until which occurrence of the delimiter [Default = 1st occurrence]
; Return values .: Trimmed String
; Author ........: TheDcoder
; Modified ......: Me
; Remarks .......: This function is not case sensitive meaning "DeLiMiTeR" is same as "Delimiter"
; Related .......: StringTrimRight
; Link ..........: https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1250764
; Example .......: No
; ===============================================================================================================================
Func StringTrimRightUntil($sDelimiter, $sString, $iOccurrence = 1)
	$iStringLen = StringLen($sString) ; We need string's len
	$iDelimiterLen = StringLen($sDelimiter) ; We need delimiter's len too
    $sString = StringTrimRight($sString, ($iStringLen - StringInStr($sString, $sDelimiter, 2, $iOccurrence)) + $iDelimiterLen) ; Explanation:
	#cs ============================================================================================|
	| 1. Find delimiters postition                                                                  |
	| 2. Remove String's len from delimiters position to invert the trimming process (to the right) |
	| 3. Add the delimiter's len to trim the delimiter                                              |
	| 4. Trim the string!!!                                                                         |
	#ce ============================================================================================|
    Return $sString ; Return the String 
EndFunc   ;==>StringTrimRightUntil


StringBetween

Author: Trong







Find strings between two string delimiters.


; EG---------------------------------------------- -
Local $sString = StringBetween("<test>C</test><test>B</test><test>A</test>", "<test>", "</test>")
MsgBox(0, "StringBetween", "Strings between <test> and </test>" & @CRLF & "Is: " & $sString & @CRLF & "In text: <test>C</test><test>B</test><test>A</test>")
; ------------------------------------------------ -

; #FUNCTION# ====================================================================================================================
; Name ..........: StringBetween
; Description ...: Find strings between two string delimiters
; Syntax ........: StringBetween($sString, $sStart, $sEnd)
; Parameters ....: $sString         - The string to search.
; Parameters ....: $sStart          - The beginning of the string to find.
;                  $sEnd            - The end of the string to find.
; Return values .: Success: a found string
;                  Failure: sets the @error flag to non-zero.
;                  @error: 1 - No strings found.
; Author ........: Trong
; Related .......: _StringBetween
; Link ..........: https://www.autoitscript.com/forum/topic/139260-autoit-snippets/?do=findComment&comment=1290019
; Example .......: Yes
; ===============================================================================================================================

Func StringBetween($sString, $sStart, $sEnd)
	$sString = StringReverse(StringTrimLeft($sString, StringInStr($sString, $sStart) + StringLen($sStart) - 1))
	$sString = StringReverse(StringTrimLeft($sString, StringInStr($sString, StringReverse($sEnd)) + StringLen($sEnd) - 1))
	Return SetError(StringLen($sString) < 1, 0, $sString)
EndFunc   ;==>StringBetween

Return To Contents

_StringGetDigitLeft

Author: DonChunior







Returns the string on the left side of a search string consisting of digits only.


#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7

; Returns the string on the left side of a search string consisting of digits only

ConsoleWrite(_StringGetDigitLeft("1234abcd5678") & @CRLF) ; Results in "1234"

Func _StringGetDigitLeft(Const ByRef $sString)
    If Not IsString($sString) Then
        Return SetError(1, 0, "")
    EndIf

    Local $iLength = StringLen($sString)
    Local $sCheckString = ""
    Local $sLeft = ""

    For $i = 1 To $iLength
        $sCheckString = StringLeft($sString, $i)
        If StringIsDigit($sCheckString) Then
            $sLeft = $sCheckString
        Else
            ExitLoop
        EndIf
    Next

    Return $sLeft
EndFunc   ;==>_StringGetDigitLeft

Return To Contents

_StringGetDigitRight

Author: DonChunior







Returns the string on the right side of a search string consisting of digits only.


#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7

; Returns the string on the right side of a search string consisting of digits only

ConsoleWrite(_StringGetDigitRight("1234abcd5678") & @CRLF) ; Results in "5678"

Func _StringGetDigitRight(Const ByRef $sString)
    If Not IsString($sString) Then
        Return SetError(1, 0, "")
    EndIf

    Local $iLength = StringLen($sString)
    Local $sCheckString = ""
    Local $sRight = ""

    For $i = $iLength To 1 Step -1
        $sCheckString = StringRight($sString, $iLength - $i + 1)
        If StringIsDigit($sCheckString) Then
            $sRight = $sCheckString
        Else
            ExitLoop
        EndIf
    Next

    Return $sRight
EndFunc   ;==>_StringGetDigitRight

Return To Contents