Duda con String::Compare

07/01/2004 - 05:41 por Ramiro Calderon Romero | Informe spam
Como están,

Tengo este codigo

class App
{
static void Main()
{
string a = "the fellowship of the ring";
string b = "The two towers";

int n = string.Compare(a,b,true);
int m = string.Compare(a,b,false);
Console.WriteLine("n={0}, m={1}",n,m);

}
}


Yo esperaria n = -1 (No tengo en cuenta el case) y m = 1 ('T' <
't' si tengo en cuenta el case). Sinembargo, obtengo n = m = -1)

Si pongo a = "a" y b="A" funciona perfectamente n=0 y m=-1
Si pongo a= "aa" y b="Ab" no tiene en cuenta que las mayúsculas van primero
que las minusculas.


Estoy haciendo algo mal o es un comportamiento esperado (y por cierto
extraño en String::Compare)??

Saludos

____________________
Ramiro Calderon Romero
rcrdev@hotmail.com







Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.507 / Virus Database: 304 - Release Date: 8/4/2003
 

Leer las respuestas

#1 Guillermo guille
07/01/2004 - 12:13 | Informe spam
hola,

En el segundo caso, eme es -1 porque:
't' es menor que 'T', recuerda que las minúsculas van antes que las mayúsculas.

En el primer caso, también -1 porque la 't' de two va después que la 'f'
fellowship

Creo que te has hecho un verdadero lio con el orden de los caracteres ASCII, en
las comparaciones las mayúsculas van después que las minúsculas...

Además, en el segundo caso que expones 'a' y 'A', si te fijas, la 'a' te la da
como menor que la 'A'.


Nos vemos.
Guillermo
P.S.
Si te parece últil mi sitio:
http://www.elguille.info/lonuevo/lo....htm#dic30
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"Ramiro Calderon Romero" wrote in message
news:e9WD$
Como están,

Tengo este codigo

class App
{
static void Main()
{
string a = "the fellowship of the ring";
string b = "The two towers";

int n = string.Compare(a,b,true);
int m = string.Compare(a,b,false);
Console.WriteLine("n={0}, m={1}",n,m);

}
}


Yo esperaria n = -1 (No tengo en cuenta el case) y m = 1 ('T' <
't' si tengo en cuenta el case). Sinembargo, obtengo n = m = -1)

Si pongo a = "a" y b="A" funciona perfectamente n=0 y m=-1
Si pongo a= "aa" y b="Ab" no tiene en cuenta que las mayúsculas van primero
que las minusculas.


Estoy haciendo algo mal o es un comportamiento esperado (y por cierto
extraño en String::Compare)??

Saludos

____________________
Ramiro Calderon Romero








Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.507 / Virus Database: 304 - Release Date: 8/4/2003


Preguntas similares