Quoi de plus utile que des fonctions toutes prêtes, Voulez vous manipuler à guise vos chaines et plus rapidement? alors cet udf est fait pour vous.
Classer les mots par ordre alphabétique, connaitre le nombre et l'emplacement des mots, de même que les mots qui les précèdent et qui les succèdent. bref, Tout faire avec les chaines de caractères.
#include <Array.au3>
Global $WinAPI_DataSepChar = Opt("GUIDataSeparatorChar")
; #FUNCTION# ====================================================================================================================
; Name ..........: StringInsert
; Description ...: Insert une chaine dans une autre chaine
; Syntax ........: StringInsert($sString[, $iIndex = -1[, $aValue = " "[, $aLeftSpace = ""[, $aRightSpace = ""]]]])
; Parameters ....: $sString - a string value.
; $iIndex - [optional] an integer value. Default is -1.
; $aValue - [optional] an array of unknowns. Default is " ".
; $aLeftSpace - [optional] an array of unknowns. Default is "".
; $aRightSpace - [optional] an array of unknowns. Default is "".
; Return values .: La nouvelle chaine
; Author ........: Numeric
; Modified ......:
; Remarks .......: Par defaut il ny pas'espaces "apres" la chaine a ajouter. vous pouvez les ajouter avec le parametre $aRightSpace =" "
; Related .......: _StrinInsert()
; Example .......: No
; ===============================================================================================================================
Func StringInsert($sString, $aValue = " ", $iIndex = -1, $aLeftSpace = " ", $aRightSpace = "")
Local $nString = (IsString($sString) = 1) ? (String($sString)) : (String($sString)), $sLength = StringLen($nString)
$iIndex = ($iIndex = -1 Or $iIndex = Default) ? ($sLength + 1) : ($iIndex)
$aValue = ($aValue = Default) ? (" ") : ($aValue)
$aLeftSpace = ($aLeftSpace = Default) ? (" ") : ($aLeftSpace)
$aRightSpace = ($aRightSpace = Default) ? ("") : ($aRightSpace)
Local $eIndex = Int($iIndex), $aNew_String = $aLeftSpace & $aValue & $aRightSpace, _
$RetString = StringTrimLeft($nString, $eIndex)
Return StringLeft($sString, $eIndex) & $aNew_String & $RetString
EndFunc ;==>StringInsert
; #FUNCTION# ====================================================================================================================
; Name ..........: StringWordToUpper
; Description ...: Converti en Majuscule un mot dans une Chaine
; Syntax ........: StringWordToUpper($String, $SubString)
; Parameters ....: $String - an unknown value.
; $SubString - an unknown value.
; $iOccurence _ default value is 0
; Return values .: Chaine converie en Majuscule, en cas d'echec la fonction retourne l'ancienne chaine
; Author ........: Numeric
; Modified ......:
; Remarks .......: $iOccurrence permet de modifier le nombre de fois voulue $SubString a partir de la guauche
; Si $ioccurence = 0 alors tous les mots egaux à $SubString sont modifiés
; Example .......: No
; ===============================================================================================================================
Func StringWordToUpper($String, $SubString, $iOccurrence = 0)
Local $iRet = $String
If StringInStr($String, $SubString) Then $iRet = StringReplace($String, $SubString, StringUpper($SubString), Int($iOccurrence))
Return $iRet
EndFunc ;==>StringWordToUpper
; #FUNCTION# ====================================================================================================================
; Name ..........: WinGetAllStringWords
; Description ...: Obtenir tous les mots dans une chaine| obtenir le nombre de mots dans une chaine
; Syntax ........: WinGetAllStringWords(Byref $String[, $bNumber = False])
; Parameters ....: $String - [in/out] an unknown value.
; $bNumber - [optional] a boolean value. Default is False.
; Return values .: Tableau des mots | nombre de mots dans $String
; Author ........: Numeric
; Modified ......:
; Remarks .......: $bNumber = true retourne le nombre de mots dans la chaine
; Par contre s'il est False , alors il retourne un tableau contenant tous les mots de la chaine
; Related .......:
; Link ..........:
; Example .......:
; ===============================================================================================================================
Func WinGetAllStringWords(ByRef $String, $bNumber = False)
Local $nString, $STRINGisMarked, $aSplit, $aResult, $GetError
$nString = (IsString($String) = 1) ? (String($String)) : (String($String))
$STRINGisMarked = StringStripWS(StringReplace($nString, " ", $WinAPI_DataSepChar), 0x8)
$aSplit = StringSplit(String($STRINGisMarked), $WinAPI_DataSepChar)
$GetError = @error
Switch $GetError
Case 1
$aResult = ($bNumber = False) ? ($nString) : (1)
Case Else
$aResult = ($bNumber = False) ? ($aSplit) : (UBound($aSplit) - 1)
EndSwitch
Return $aResult
EndFunc ;==>WinGetAllStringWords
; #FUNCTION# ====================================================================================================================
; Name ..........: StringCharacterToUpper
; Description ...: Converti en majuscule des caracteres donnés dans une phrase
; Syntax ........: StringCharacterToUpper($String, $SubString)
; Parameters ....: $String - an unknown value.
; $SubString - an unknown value.
; Return values .: Succes = Nouvelle chaine avec les caracteres modifiés | echec = ancienne chaine sans modifications
; Author ........: Numeric
; Modified ......:
; Remarks .......: Les caracteres peuvent vous donner l'impression d'etre un mot, mais la fonction ne considerera pas le mot mais les
; lettres constituant le mot.
; Example .......: Yes
; ===============================================================================================================================
#cs
Local $exemple = "Salut mon ami, comment vas-tu? tu as mangé comme tu l'avais dit!"
Local $CallFunc = StringCharacterToUpper($exemple, "ami")
MsgBox(48,"StringCharacterToUpper",$CallFunc)
#ce
Func StringCharacterToUpper($String, $SubString)
$sString = (IsString($String) = 1) ? (String($String)) : (String($String))
Local $aNex_String = $String, $aLetter, $aLast = -1, $getValue, $iRet, $sLenght = Number(StringLen($SubString))
For $i = 1 To $sLenght
$aLast += 1
$aLetter = StringTrimLeft(StringLeft($SubString, $i), $aLast)
$aNex_String &= $WinAPI_DataSepChar & StringReplace($aNex_String, $aLetter, StringUpper($aLetter))
Next
$getValue = StringSplit($aNex_String, $WinAPI_DataSepChar)
$iRet = (IsArray($getValue) = 1) ? ($getValue[$getValue[0]]) : (StringTrimLeft($aNex_String, 1))
Return $iRet
EndFunc ;==>StringCharacterToUpper
; #FUNCTION# ====================================================================================================================
; Name ..........: StringGetLastWord
; Description ...: Obtenir dans un tableau tous mots precedants un autre mot donné
; Syntax ........: WordGetLastWord($String, $iWord[, $iFlag = 0])
; Parameters ....: $String - an unknown value.
; $iWord - an integer value.
; $iFlag - [optional] an integer value. Default is 0.
; Return values .: Les mots precedents le mot passé en $iWord | -1 si $iWord n'est pas dans $String | $False si echec
; Author ........: Numeric
; Modified ......:
; Remarks .......: Le flag nous permet d'obtenir le premier mot precedant $iWord ou tous les mot le Precedant
; Related .......:
; Link ..........:
; Example .......: no
; ===============================================================================================================================
Func StringGetLastWord($String, $iWord, $iFlag = 0)
If StringInStr($String, $iWord) = 0 Then Return SetError(@error, @extended, -1); specified word doesnt exist in string
Local Const $OptSymbol = "__"
Local $sFirstMade, $sBetween, $aDjust, $aRepTest, $aResult, $Case = ""
$sFirstMade = StringReplace($String, " ", $OptSymbol)
$aDjust = $OptSymbol & $sFirstMade
$aRepTest = StringReplace($aDjust, String($OptSymbol & $iWord & $OptSymbol), $WinAPI_DataSepChar)
$sBetween = StringSplit($aRepTest, $OptSymbol)
Local $GetLastWord[UBound($sBetween) + 1]
Local $aCount = -1
If IsArray($sBetween) Then
For $j = 0 To UBound($sBetween) - 1
If StringInStr($sBetween[$j], $WinAPI_DataSepChar) Then
$aCount += 1
$GetLastWord[$aCount] = StringSplit($sBetween[$j], $WinAPI_DataSepChar)[StringSplit($sBetween[$j], $WinAPI_DataSepChar)[0] - 1]
EndIf
Next
ReDim $GetLastWord[$aCount + 1]
If IsArray($GetLastWord) Then $Case = "[0]"
$aResult = ($iFlag = 1) ? ($GetLastWord & $Case) : ($GetLastWord)
Return $aResult
EndIf
Return False
EndFunc ;==>StringGetLastWord
; #FUNCTION# ====================================================================================================================
; Name ..........: StringGetNextWord
; Description ...:
; Syntax ........: WordGetNextWord($String, $iWord[, $iFlag = 0])
; Parameters ....: $String - an unknown value.
; $iWord - an integer value.
; $iFlag - [optional] an integer value. Default is 0.
; Return values .: Les mots precedents le mot passé en $iWord | -1 si $iWord n'est pas dans $String | $False si echec
; Author ........: Numeric
; Modified ......:
; Remarks .......: Le flag nous permet d'obtenir le premier mot precedant $iWord ou tous les mot le Precedant
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func StringGetNextWord($String, $iWord, $iFlag = 0)
If StringInStr($String, $iWord) = 0 Then Return SetError(@error, @extended, -1); specified word doesnt exist in string
Local Const $OptSymbol = "__"
Local $sFirstMade, $sBetween, $aDjust, $aRepTest, $aResult, $Case = ""
$sFirstMade = StringReplace($String, " ", $OptSymbol)
$aDjust = $OptSymbol & $sFirstMade
$aRepTest = StringReplace($aDjust, String($OptSymbol & $iWord & $OptSymbol), $WinAPI_DataSepChar)
$sBetween = StringSplit($aRepTest, $OptSymbol)
Local $GetLastWord[UBound($sBetween) + 1]
Local $aCount = -1
If IsArray($sBetween) Then
For $j = 0 To UBound($sBetween) - 1
If StringInStr($sBetween[$j], $WinAPI_DataSepChar) Then
$aCount += 1
$GetLastWord[$aCount] = StringSplit($sBetween[$j], $WinAPI_DataSepChar)[StringSplit($sBetween[$j], $WinAPI_DataSepChar)[0]]
EndIf
Next
ReDim $GetLastWord[$aCount + 1]
If IsArray($GetLastWord) Then $Case = "[0]"
$aResult = ($iFlag = 1) ? ($GetLastWord & $Case) : ($GetLastWord)
Return $aResult
EndIf
Return False
EndFunc ;==>StringGetNextWord
; #FUNCTION# ====================================================================================================================
; Name ..........: WordNumberInStr
; Description ...: Obtient le nombre de fois qu'un mot apparait dans une chaine
; Syntax ........: WordNumberInStr($String, $iWord[, $CaseSENSE = 0])
; Parameters ....: $String - an unknown value.
; $iWord - an integer value.
; $CaseSENSE - [optional] an unknown value. Default is 0.
; Return values .: Nombre de Fois que le mot $iWord existe dans $String| si echec retourne False et -1 si $iWord ne figure pas dans $String
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......: StringInStr; avec extended Amelioré
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WordNumberInStr($String, $iWord, $CaseSENSE = 0)
Local $sVerify, $aSplit, $aResult, $GetError, $aRetMODE = False, $aNum = 0
$String = (IsString($String) = 1) ? (String($String)) : (String($String))
If Not StringInStr($String, $iWord) <> 0 Then Return SetError(@error, @extended, -1)
$sVerify = StringStripWS($WinAPI_DataSepChar & StringReplace($String, " ", $WinAPI_DataSepChar), 8)
$aSplit = StringSplit(String($sVerify), $WinAPI_DataSepChar)
$GetError = @error
Switch $GetError
Case 1
If StringInStr($String, $iWord, $CaseSENSE) <> 0 Then
$aNum = 1
EndIf
Case Else
For $j = 0 To UBound($aSplit) - 1
If StringCompare($aSplit[$j], $iWord, $CaseSENSE) = 0 Then
$aNum += 1
EndIf
Next
EndSwitch
$aRetMODE = ($aNum = 0) ? (False) : ($aNum)
Return $aRetMODE
EndFunc ;==>WordNumberInStr
; #FUNCTION# ====================================================================================================================
; Name ..........: WordMaxLength
; Description ...: Obtient les mots le ou les plus longues d'une chaine
; Syntax ........: WordMaxLength($String[, $s__bVisible = False])
; Parameters ....: $String - an unknown value.
; $s__bVisible - [optional] a string value. Default is False.
; Return values .: Liste de tous les mots les plus long ou leur nombre de caracteres (selon le $Filag $s__bVisible
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WordMaxLength($String, $s__bVisible = False)
Local $aWords, $aRetMODE, $isU_Bound, $GetMaxLen, $Wcount = -1
$aWords = WinGetAllStringWords($String, False)
$isU_Bound = UBound($aWords) + 1
Local $StockLen[$isU_Bound]
Local $StockMaxChar[$isU_Bound], $own = -1
For $j = 0 To $isU_Bound - 2
$StockLen[$j] = Number(StringLen($aWords[$j]))
Next
ReDim $StockLen[$isU_Bound]
$GetMaxLen = _ArrayMax($StockLen, 1)
For $i = 0 To $isU_Bound - 2
If StringLen($aWords[$i]) = $GetMaxLen Then
$Wcount += 1
$StockMaxChar[$Wcount] = $aWords[$i]
EndIf
Next
ReDim $StockMaxChar[$Wcount + 1]
$aRetMODE = ($s__bVisible = False) ? ($GetMaxLen) : ($StockMaxChar)
Return $aRetMODE
EndFunc ;==>WordMaxLength
; #FUNCTION# ====================================================================================================================
; Name ..........: aArrayToStringAlphaOrder
; Description ...: Classez par ordre alphabetique , les elements d'un tableau
; Syntax ........: aArrayToStringAlphaOrder($sArray[, $AlphaOrder = "A-Z"])
; Parameters ....: $sArray - a string value.
; $AlphaOrder - [optional] an unknown value. Default is "A-Z".
; Return values .: Tableau des elements classes par ordre Alphabetique| echec : -1 si $sArray n'est pas un tableau et
; -2 si $AlphaOrder n'est pas valide
; Author ........: Numeric
; Modified ......:
; Remarks .......: il y a l'ordre A-Z et l'ordre Z-A
; Related .......:
; Link ..........:
; Example .......: Yes
;
; ===============================================================================================================================
; Region Exemple
#cs
Local $MakeArray, $CallFunc, $2ndCall, $FuncEXstring = "Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche"
$MakeArray = StringSplit($FuncEXstring, "|")
$CallFunc = aArrayToStringAlphaOrder($MakeArray, "A-Z")
_ArrayDisplay($CallFunc, "A-Z order")
$2ndCall = aArrayToStringAlphaOrder($MakeArray, "Z-A")
_ArrayDisplay($2ndCall, "Z-A order")
#ce
;End Region exemple
Func aArrayToStringAlphaOrder($sArray, $AlphaOrder = "A-Z")
If Not IsArray($sArray) Then Return SetError(1, 0, -3)
Local $AlphaInArray[27] = [0]
Local $aList = "", $isSPLIT, $aToStr, $StrToa, $Wcnt = -1
Local Const $alphabet = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
Switch $AlphaOrder
Case "A-Z"
$aList = $alphabet
Case "Z-A"
$aList = StringReverse($alphabet)
Case Else
Return SetError(@error, @extended, -2)
EndSwitch
$aToStr = _ArrayToString($sArray) ;To get my own delimiter( the default)
$StrToa = StringSplit($aToStr, $WinAPI_DataSepChar);\\getting my default delimiter
Local $isSPLIT = StringSplit($aList, ",")
For $j = 0 To UBound($isSPLIT) - 1
$AlphaInArray[$j] = $isSPLIT[$j]
Next
Local $NewConfig[$StrToa[0] + 1]
For $w = 0 To UBound($AlphaInArray) - 1
For $i = 0 To UBound($StrToa) - 1
For $Z = 1 To StringLen($StrToa[$i])
If StringLeft($StrToa[$i], $Z) = $AlphaInArray[$w] Then
$Wcnt += 1
$NewConfig[$Wcnt] = $StrToa[$i]
EndIf
Next
Next
Next
ReDim $NewConfig[$Wcnt + 1]
Return $NewConfig
EndFunc ;==>aArrayToStringAlphaOrder
Global $WinAPI_DataSepChar = Opt("GUIDataSeparatorChar")
; #FUNCTION# ====================================================================================================================
; Name ..........: StringInsert
; Description ...: Insert une chaine dans une autre chaine
; Syntax ........: StringInsert($sString[, $iIndex = -1[, $aValue = " "[, $aLeftSpace = ""[, $aRightSpace = ""]]]])
; Parameters ....: $sString - a string value.
; $iIndex - [optional] an integer value. Default is -1.
; $aValue - [optional] an array of unknowns. Default is " ".
; $aLeftSpace - [optional] an array of unknowns. Default is "".
; $aRightSpace - [optional] an array of unknowns. Default is "".
; Return values .: La nouvelle chaine
; Author ........: Numeric
; Modified ......:
; Remarks .......: Par defaut il ny pas'espaces "apres" la chaine a ajouter. vous pouvez les ajouter avec le parametre $aRightSpace =" "
; Related .......: _StrinInsert()
; Example .......: No
; ===============================================================================================================================
Func StringInsert($sString, $aValue = " ", $iIndex = -1, $aLeftSpace = " ", $aRightSpace = "")
Local $nString = (IsString($sString) = 1) ? (String($sString)) : (String($sString)), $sLength = StringLen($nString)
$iIndex = ($iIndex = -1 Or $iIndex = Default) ? ($sLength + 1) : ($iIndex)
$aValue = ($aValue = Default) ? (" ") : ($aValue)
$aLeftSpace = ($aLeftSpace = Default) ? (" ") : ($aLeftSpace)
$aRightSpace = ($aRightSpace = Default) ? ("") : ($aRightSpace)
Local $eIndex = Int($iIndex), $aNew_String = $aLeftSpace & $aValue & $aRightSpace, _
$RetString = StringTrimLeft($nString, $eIndex)
Return StringLeft($sString, $eIndex) & $aNew_String & $RetString
EndFunc ;==>StringInsert
; #FUNCTION# ====================================================================================================================
; Name ..........: StringWordToUpper
; Description ...: Converti en Majuscule un mot dans une Chaine
; Syntax ........: StringWordToUpper($String, $SubString)
; Parameters ....: $String - an unknown value.
; $SubString - an unknown value.
; $iOccurence _ default value is 0
; Return values .: Chaine converie en Majuscule, en cas d'echec la fonction retourne l'ancienne chaine
; Author ........: Numeric
; Modified ......:
; Remarks .......: $iOccurrence permet de modifier le nombre de fois voulue $SubString a partir de la guauche
; Si $ioccurence = 0 alors tous les mots egaux à $SubString sont modifiés
; Example .......: No
; ===============================================================================================================================
Func StringWordToUpper($String, $SubString, $iOccurrence = 0)
Local $iRet = $String
If StringInStr($String, $SubString) Then $iRet = StringReplace($String, $SubString, StringUpper($SubString), Int($iOccurrence))
Return $iRet
EndFunc ;==>StringWordToUpper
; #FUNCTION# ====================================================================================================================
; Name ..........: WinGetAllStringWords
; Description ...: Obtenir tous les mots dans une chaine| obtenir le nombre de mots dans une chaine
; Syntax ........: WinGetAllStringWords(Byref $String[, $bNumber = False])
; Parameters ....: $String - [in/out] an unknown value.
; $bNumber - [optional] a boolean value. Default is False.
; Return values .: Tableau des mots | nombre de mots dans $String
; Author ........: Numeric
; Modified ......:
; Remarks .......: $bNumber = true retourne le nombre de mots dans la chaine
; Par contre s'il est False , alors il retourne un tableau contenant tous les mots de la chaine
; Related .......:
; Link ..........:
; Example .......:
; ===============================================================================================================================
Func WinGetAllStringWords(ByRef $String, $bNumber = False)
Local $nString, $STRINGisMarked, $aSplit, $aResult, $GetError
$nString = (IsString($String) = 1) ? (String($String)) : (String($String))
$STRINGisMarked = StringStripWS(StringReplace($nString, " ", $WinAPI_DataSepChar), 0x8)
$aSplit = StringSplit(String($STRINGisMarked), $WinAPI_DataSepChar)
$GetError = @error
Switch $GetError
Case 1
$aResult = ($bNumber = False) ? ($nString) : (1)
Case Else
$aResult = ($bNumber = False) ? ($aSplit) : (UBound($aSplit) - 1)
EndSwitch
Return $aResult
EndFunc ;==>WinGetAllStringWords
; #FUNCTION# ====================================================================================================================
; Name ..........: StringCharacterToUpper
; Description ...: Converti en majuscule des caracteres donnés dans une phrase
; Syntax ........: StringCharacterToUpper($String, $SubString)
; Parameters ....: $String - an unknown value.
; $SubString - an unknown value.
; Return values .: Succes = Nouvelle chaine avec les caracteres modifiés | echec = ancienne chaine sans modifications
; Author ........: Numeric
; Modified ......:
; Remarks .......: Les caracteres peuvent vous donner l'impression d'etre un mot, mais la fonction ne considerera pas le mot mais les
; lettres constituant le mot.
; Example .......: Yes
; ===============================================================================================================================
#cs
Local $exemple = "Salut mon ami, comment vas-tu? tu as mangé comme tu l'avais dit!"
Local $CallFunc = StringCharacterToUpper($exemple, "ami")
MsgBox(48,"StringCharacterToUpper",$CallFunc)
#ce
Func StringCharacterToUpper($String, $SubString)
$sString = (IsString($String) = 1) ? (String($String)) : (String($String))
Local $aNex_String = $String, $aLetter, $aLast = -1, $getValue, $iRet, $sLenght = Number(StringLen($SubString))
For $i = 1 To $sLenght
$aLast += 1
$aLetter = StringTrimLeft(StringLeft($SubString, $i), $aLast)
$aNex_String &= $WinAPI_DataSepChar & StringReplace($aNex_String, $aLetter, StringUpper($aLetter))
Next
$getValue = StringSplit($aNex_String, $WinAPI_DataSepChar)
$iRet = (IsArray($getValue) = 1) ? ($getValue[$getValue[0]]) : (StringTrimLeft($aNex_String, 1))
Return $iRet
EndFunc ;==>StringCharacterToUpper
; #FUNCTION# ====================================================================================================================
; Name ..........: StringGetLastWord
; Description ...: Obtenir dans un tableau tous mots precedants un autre mot donné
; Syntax ........: WordGetLastWord($String, $iWord[, $iFlag = 0])
; Parameters ....: $String - an unknown value.
; $iWord - an integer value.
; $iFlag - [optional] an integer value. Default is 0.
; Return values .: Les mots precedents le mot passé en $iWord | -1 si $iWord n'est pas dans $String | $False si echec
; Author ........: Numeric
; Modified ......:
; Remarks .......: Le flag nous permet d'obtenir le premier mot precedant $iWord ou tous les mot le Precedant
; Related .......:
; Link ..........:
; Example .......: no
; ===============================================================================================================================
Func StringGetLastWord($String, $iWord, $iFlag = 0)
If StringInStr($String, $iWord) = 0 Then Return SetError(@error, @extended, -1); specified word doesnt exist in string
Local Const $OptSymbol = "__"
Local $sFirstMade, $sBetween, $aDjust, $aRepTest, $aResult, $Case = ""
$sFirstMade = StringReplace($String, " ", $OptSymbol)
$aDjust = $OptSymbol & $sFirstMade
$aRepTest = StringReplace($aDjust, String($OptSymbol & $iWord & $OptSymbol), $WinAPI_DataSepChar)
$sBetween = StringSplit($aRepTest, $OptSymbol)
Local $GetLastWord[UBound($sBetween) + 1]
Local $aCount = -1
If IsArray($sBetween) Then
For $j = 0 To UBound($sBetween) - 1
If StringInStr($sBetween[$j], $WinAPI_DataSepChar) Then
$aCount += 1
$GetLastWord[$aCount] = StringSplit($sBetween[$j], $WinAPI_DataSepChar)[StringSplit($sBetween[$j], $WinAPI_DataSepChar)[0] - 1]
EndIf
Next
ReDim $GetLastWord[$aCount + 1]
If IsArray($GetLastWord) Then $Case = "[0]"
$aResult = ($iFlag = 1) ? ($GetLastWord & $Case) : ($GetLastWord)
Return $aResult
EndIf
Return False
EndFunc ;==>StringGetLastWord
; #FUNCTION# ====================================================================================================================
; Name ..........: StringGetNextWord
; Description ...:
; Syntax ........: WordGetNextWord($String, $iWord[, $iFlag = 0])
; Parameters ....: $String - an unknown value.
; $iWord - an integer value.
; $iFlag - [optional] an integer value. Default is 0.
; Return values .: Les mots precedents le mot passé en $iWord | -1 si $iWord n'est pas dans $String | $False si echec
; Author ........: Numeric
; Modified ......:
; Remarks .......: Le flag nous permet d'obtenir le premier mot precedant $iWord ou tous les mot le Precedant
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func StringGetNextWord($String, $iWord, $iFlag = 0)
If StringInStr($String, $iWord) = 0 Then Return SetError(@error, @extended, -1); specified word doesnt exist in string
Local Const $OptSymbol = "__"
Local $sFirstMade, $sBetween, $aDjust, $aRepTest, $aResult, $Case = ""
$sFirstMade = StringReplace($String, " ", $OptSymbol)
$aDjust = $OptSymbol & $sFirstMade
$aRepTest = StringReplace($aDjust, String($OptSymbol & $iWord & $OptSymbol), $WinAPI_DataSepChar)
$sBetween = StringSplit($aRepTest, $OptSymbol)
Local $GetLastWord[UBound($sBetween) + 1]
Local $aCount = -1
If IsArray($sBetween) Then
For $j = 0 To UBound($sBetween) - 1
If StringInStr($sBetween[$j], $WinAPI_DataSepChar) Then
$aCount += 1
$GetLastWord[$aCount] = StringSplit($sBetween[$j], $WinAPI_DataSepChar)[StringSplit($sBetween[$j], $WinAPI_DataSepChar)[0]]
EndIf
Next
ReDim $GetLastWord[$aCount + 1]
If IsArray($GetLastWord) Then $Case = "[0]"
$aResult = ($iFlag = 1) ? ($GetLastWord & $Case) : ($GetLastWord)
Return $aResult
EndIf
Return False
EndFunc ;==>StringGetNextWord
; #FUNCTION# ====================================================================================================================
; Name ..........: WordNumberInStr
; Description ...: Obtient le nombre de fois qu'un mot apparait dans une chaine
; Syntax ........: WordNumberInStr($String, $iWord[, $CaseSENSE = 0])
; Parameters ....: $String - an unknown value.
; $iWord - an integer value.
; $CaseSENSE - [optional] an unknown value. Default is 0.
; Return values .: Nombre de Fois que le mot $iWord existe dans $String| si echec retourne False et -1 si $iWord ne figure pas dans $String
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......: StringInStr; avec extended Amelioré
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WordNumberInStr($String, $iWord, $CaseSENSE = 0)
Local $sVerify, $aSplit, $aResult, $GetError, $aRetMODE = False, $aNum = 0
$String = (IsString($String) = 1) ? (String($String)) : (String($String))
If Not StringInStr($String, $iWord) <> 0 Then Return SetError(@error, @extended, -1)
$sVerify = StringStripWS($WinAPI_DataSepChar & StringReplace($String, " ", $WinAPI_DataSepChar), 8)
$aSplit = StringSplit(String($sVerify), $WinAPI_DataSepChar)
$GetError = @error
Switch $GetError
Case 1
If StringInStr($String, $iWord, $CaseSENSE) <> 0 Then
$aNum = 1
EndIf
Case Else
For $j = 0 To UBound($aSplit) - 1
If StringCompare($aSplit[$j], $iWord, $CaseSENSE) = 0 Then
$aNum += 1
EndIf
Next
EndSwitch
$aRetMODE = ($aNum = 0) ? (False) : ($aNum)
Return $aRetMODE
EndFunc ;==>WordNumberInStr
; #FUNCTION# ====================================================================================================================
; Name ..........: WordMaxLength
; Description ...: Obtient les mots le ou les plus longues d'une chaine
; Syntax ........: WordMaxLength($String[, $s__bVisible = False])
; Parameters ....: $String - an unknown value.
; $s__bVisible - [optional] a string value. Default is False.
; Return values .: Liste de tous les mots les plus long ou leur nombre de caracteres (selon le $Filag $s__bVisible
; Author ........: Numeric
; Modified ......:
; Remarks .......:
; Related .......:
; Link ..........:
; Example .......: No
; ===============================================================================================================================
Func WordMaxLength($String, $s__bVisible = False)
Local $aWords, $aRetMODE, $isU_Bound, $GetMaxLen, $Wcount = -1
$aWords = WinGetAllStringWords($String, False)
$isU_Bound = UBound($aWords) + 1
Local $StockLen[$isU_Bound]
Local $StockMaxChar[$isU_Bound], $own = -1
For $j = 0 To $isU_Bound - 2
$StockLen[$j] = Number(StringLen($aWords[$j]))
Next
ReDim $StockLen[$isU_Bound]
$GetMaxLen = _ArrayMax($StockLen, 1)
For $i = 0 To $isU_Bound - 2
If StringLen($aWords[$i]) = $GetMaxLen Then
$Wcount += 1
$StockMaxChar[$Wcount] = $aWords[$i]
EndIf
Next
ReDim $StockMaxChar[$Wcount + 1]
$aRetMODE = ($s__bVisible = False) ? ($GetMaxLen) : ($StockMaxChar)
Return $aRetMODE
EndFunc ;==>WordMaxLength
; #FUNCTION# ====================================================================================================================
; Name ..........: aArrayToStringAlphaOrder
; Description ...: Classez par ordre alphabetique , les elements d'un tableau
; Syntax ........: aArrayToStringAlphaOrder($sArray[, $AlphaOrder = "A-Z"])
; Parameters ....: $sArray - a string value.
; $AlphaOrder - [optional] an unknown value. Default is "A-Z".
; Return values .: Tableau des elements classes par ordre Alphabetique| echec : -1 si $sArray n'est pas un tableau et
; -2 si $AlphaOrder n'est pas valide
; Author ........: Numeric
; Modified ......:
; Remarks .......: il y a l'ordre A-Z et l'ordre Z-A
; Related .......:
; Link ..........:
; Example .......: Yes
;
; ===============================================================================================================================
; Region Exemple
#cs
Local $MakeArray, $CallFunc, $2ndCall, $FuncEXstring = "Lundi|Mardi|Mercredi|Jeudi|Vendredi|Samedi|Dimanche"
$MakeArray = StringSplit($FuncEXstring, "|")
$CallFunc = aArrayToStringAlphaOrder($MakeArray, "A-Z")
_ArrayDisplay($CallFunc, "A-Z order")
$2ndCall = aArrayToStringAlphaOrder($MakeArray, "Z-A")
_ArrayDisplay($2ndCall, "Z-A order")
#ce
;End Region exemple
Func aArrayToStringAlphaOrder($sArray, $AlphaOrder = "A-Z")
If Not IsArray($sArray) Then Return SetError(1, 0, -3)
Local $AlphaInArray[27] = [0]
Local $aList = "", $isSPLIT, $aToStr, $StrToa, $Wcnt = -1
Local Const $alphabet = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z"
Switch $AlphaOrder
Case "A-Z"
$aList = $alphabet
Case "Z-A"
$aList = StringReverse($alphabet)
Case Else
Return SetError(@error, @extended, -2)
EndSwitch
$aToStr = _ArrayToString($sArray) ;To get my own delimiter( the default)
$StrToa = StringSplit($aToStr, $WinAPI_DataSepChar);\\getting my default delimiter
Local $isSPLIT = StringSplit($aList, ",")
For $j = 0 To UBound($isSPLIT) - 1
$AlphaInArray[$j] = $isSPLIT[$j]
Next
Local $NewConfig[$StrToa[0] + 1]
For $w = 0 To UBound($AlphaInArray) - 1
For $i = 0 To UBound($StrToa) - 1
For $Z = 1 To StringLen($StrToa[$i])
If StringLeft($StrToa[$i], $Z) = $AlphaInArray[$w] Then
$Wcnt += 1
$NewConfig[$Wcnt] = $StrToa[$i]
EndIf
Next
Next
Next
ReDim $NewConfig[$Wcnt + 1]
Return $NewConfig
EndFunc ;==>aArrayToStringAlphaOrder