Compare deux chaînes de caractères pour une locale spécifiée
#include <WinAPILocale.au3>
_WinAPI_CompareString ( $iLCID, $sString1, $sString2 [, $iFlags = 0] )
$iLCID | L'identifiant de la locale (LCID) qui spécifie les paramètres régionaux ou l'une des valeurs prédéfinies suivantes: $LOCALE_INVARIANT $LOCALE_SYSTEM_DEFAULT $LOCALE_USER_DEFAULT Windows Vista ou une version ultérieure $LOCALE_CUSTOM_DEFAULT $LOCALE_CUSTOM_UI_DEFAULT $LOCALE_CUSTOM_UNSPECIFIED |
$sString1 | La première chaîne à comparer. |
$sString2 | La deuxième chaîne à comparer. |
$iFlags | [optionnel] Les flags qui indiquent comment la fonction compare les deux chaînes. Ce paramètre peut être 0 ou une combinaison des valeurs suivantes: $LINGUISTIC_IGNORECASE $LINGUISTIC_IGNOREDIACRITIC $NORM_IGNORECASE $NORM_IGNOREKANATYPE $NORM_IGNORENONSPACE $NORM_IGNORESYMBOLS $NORM_IGNOREWIDTH $NORM_LINGUISTIC_CASING $SORT_STRINGSORT Windows Vista ou une version ultérieure $SORT_DIGITSASNUMBERS |
Succès: | Retourne l'une des valeurs suivantes, qui indique le résultat de la comparaison de chaînes de caractères: $CSTR_LESS_THAN $CSTR_EQUAL $CSTR_GREATER_THAN |
Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations supplémentaires sur l'erreur. |
Normalement, pour les comparaisons insensibles à la casse, _WinAPI_CompareString() mappe la minuscule "i" en la majuscule "I", même lorsque la locale est le Turc ou Azéri.
Le flag $NORM_LINGUISTIC_CASING remplace ce comportement pour le Turc ou l'Azéri.
Si cette option est spécifiée en conjonction avec Turc ou Azéri, LATIN SMALL LETTER DOTLESS I (U+0131) est la forme minuscule de LATIN CAPITAL LETTER I (U+0049) et LATIN SMALL LETTER I (U+0069) est la forme minuscule de LATIN CAPITAL LETTER I WITH DOT ABOVE (U+0130).
Consultez CompareString dans la librairie MSDN.
#include <APILocaleConstants.au3> #include <Array.au3> #include <MsgBoxConstants.au3> #include <WinAPILocale.au3> #include <WinAPISys.au3> If Number(_WinAPI_GetVersion()) < 6.1 Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Requiert Windows 7 ou une version ultérieure.') Exit EndIf ; Crée un tableau de chaînes ("Item*") Local $aItem[100] For $i = 0 To UBound($aItem) - 1 $aItem[$i] = 'Item'& Random(0, 100, 1) Next _ArrayDisplay($aItem, 'Tableau initial') ; Tableau trié _ArraySort($aItem) _ArrayDisplay($aItem, 'Tri simple') ; Tri le tableau (tri à bulles) en ignorant la casse et en accordant les chiffres Local $sTemp For $i = 0 To UBound($aItem) - 2 For $j = $i + 1 To UBound($aItem) - 1 Switch _WinAPI_CompareString($LOCALE_INVARIANT, $aItem[$i], $aItem[$j], BitOR($NORM_IGNORECASE, $SORT_DIGITSASNUMBERS)) Case $CSTR_GREATER_THAN $sTemp = $aItem[$i] $aItem[$i] = $aItem[$j] $aItem[$j] = $sTemp Case Else EndSwitch Next Next _ArrayDisplay($aItem, 'Tri à bulle insensible à la casse')