UDF > WinAPIEx > Internationalization >


_WinAPI_CompareString

Compare deux chaînes de caractères pour une locale spécifiée

#include <WinAPILocale.au3>
_WinAPI_CompareString ( $iLCID, $sString1, $sString2 [, $iFlags = 0] )

Paramètres

$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

Valeur de retour

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.

Remarque

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).

Voir aussi

Consultez CompareString dans la librairie MSDN.

Exemple

#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')