Ho una domanda relativa al confronto tra stringhe e confronto caratteri.Confronto tra stringhe e ordine alfabetico dei singoli caratteri
I caratteri >
e 0
(zero) hanno i seguenti valori decimali 62
e 48
di conseguenza.
Quando metto a confronto due personaggi nel seguente codice, ottengo il valore True
(che è corretto)
Console.WriteLine('>' > '0');
Quando metto a confronto due stringhe di un carattere nel codice seguente, ottengo valore -1
che indica che ">" è minore di "0" (cultura di default è l'inglese)
Console.WriteLine(string.Compare(">", "0"));
Mentre confronto e "1" (valu "3" 51
e 49
codice ES) nel codice seguente restituisce 1
(come previsto)
Console.WriteLine(string.Compare("3", "1"));
Inoltre, string.Compare(string str1, string str2)
documentazione dice:
Il confronto utilizza la cultura corrente per ottenere specifici cultura informazioni quali regole involucro e la ordine alfabetico caratteri individuali
Sarebbe in grado di spiegare (o fornire riferimento ad alcuni documenti) come il confronto tring è implementato per es. come viene calcolato l'ordine alfabetico dei singoli caratteri ?
[MSDN] (http://msdn.microsoft.com/en-us/library/84787k22.aspx) dice "String.Compare (Stra STRB) - Meno di zero - strA è meno di strB. " Ad esempio, 'string.Compare (" A "," B ")' restituisce '-1' -' "A" 'è minore di' "B" '. Perché ''>> 'minore di' "0" '? – dtb
Ho aggiornato la mia domanda: quando confronti "3" a "1" ottieni il valore '1' dove" 3 "ha il codice 51 e" 1 "ha il codice 49 (come previsto). In modo che non corrisponda alla tua spiegazione. – Alexandar
@Alexandar buon punto. Penso che PeteKirkham abbia risposto meglio di quanto ho fatto io. – DiskJunky