Dakoo

¿Te gusta la web?

Posted by admin ADD COMMENTS

Una de las cosas raras que me ha pasado con js fue una comparación de string.

Para los que han programado en otros lenguajes mas o menos  "modernos" saben que uno puede saber si un string es mayor que otro solo colocando la expresion "string1 > strin2" o "string1 < string2", esto en sí debería devolver 1 o 0 dependiendo de los strings ingresados. Yo pensaba que esta "regla" también se respetaba para js, GRAN ERROR SEÑOR, osea, no es TAN error, porque como siempre hay excepciones a la regla.

En firefox me funcionaba, en chrome y en ie6 no.

Ahora la solución.

Cachureando por ahi y por alla, recordando funciones de otros lenguajes(java más especificamente)  llegue a una página en la que implementó la función "compareTo", la cuál por ejemplo en java existe. Lo que hace esto es comparar caracter por caracter el unicode de cada uno y entregando el resultado. Con esto se dejan de lado los errores (que pienso que es donde se marean los navegadores) que se pueden producir por caracteres extraños, acentos por ejemplo, mayúsculas u otra cosa.

Vamos al código

 
function compareTo( s )
{
var len1 = this.length;
var len2 = s.length;
var n = ( len1 < len2 ? len1 : len2 );
 
for( i = 0 ; i < n ; i++ )
{
var a = this.charCodeAt( i );
var b = s.charCodeAt( i )
if( a != b )
{
return( a - b );
}
}
return( len1 - len2 );
}
String.prototype.compareTo = compareTo;
 

Lindo no :D

Cualquier duda o sugerencia no dudes en comentar

Saludos tuto

Leave a Reply

Acerca del sitio

¿Que encontraras aquí? Trataré de escribir acerca de temas que me gustan y que puedan servirle a alguien.

Comentarios

Site speeded up by PHP Speedy Site speeded up by PHP Speedy