Acentos y tildes en Javascript
Para mostrar acentos y otros carácteres especiales con javascript, por ejemplo en un alert() hay que hacerlo en unicode. En Nice entity hay una lista de conversión entre carácteres especiales y su versión en HTML y unicode.
Por ejemplo, á en unicode sería Seguir leyendo y ver ó escribir comentarios →\u00e1, de manera que es prácticamente imposible recordar todos los carácteres, por eso lo más lógico es hacer una función que nos los convierta, así podemos escribir con los carácteres que queramos sin preocuparnos de la codificación, y luego aplicar la función.
Base64 (encode y decode) en Javascript
Me he pasado un rato buscando alguna función para codificar y decodificar (que no encriptar) cadenas de texto en base64, de la misma forma que lo haría en PHP.
En PHP es algo así:
<?PHP
$cadena = base64_encode('w00t');
echo $cadena; # dzAwdA==
$cadena = base64_decode('dzAwdA==');
echo $cadena; # w00t
?>
Y en Javascript, con el código que pondré a continuación, sería algo así:
<script>
var cadena = Base64.encode('w00t');
alert(cadena); // dzAwdA==
var cadena = Base64.decode('dzAwdA==');
alert(cadena); // w00t
</script>
La función str_replace() de PHP en Javascript
La función str_replace() de PHP tiene un uso muy sencillo, se le entregan 3 parámetros; la cadena a buscar, la cadena por la que se substituirá, y la cadena sobre la que se va a trabajar. Por ejemplo…
$cadena = 'Prefiero el helado de frutas del bosque';
echo $cadena;
// Prefiero el helado de frutas del bosque
$cadena = str_replace('frutas del bosque','pistacho',$cadena);
echo $cadena;
// Prefiero el helado de pistacho
Más información sobre str_replace() en la página de PHP.
Para hacerlo en Javascript se haría así:
cadena = 'Prefiero el helado de frutas del bosque'; alert(cadena); // Prefiero el helado de frutas del bosque cadena = cadena.replace(/frutas del bosque/g,"pistacho"); alert(cadena); // Prefiero el helado de pistacho
Si sólo se quiere cambiar la primera coincidencia, en vez de utilizar /frutas del bosque/g debería ser "frutas del bosque". El cambio entre //g y "" es aparentemente absurdo y me ha costado varias horas de trabajo… pero de errores se aprende.
str_replace() de PHP en Javascript
El otro día me dio por buscarlo y me di cuenta de que la gente estaba haciendo funciones propias para imitar a str_replace de php en javascript. Es curioso, ya que javascript tiene su propia versión de forma nativa.
Por ejemplo para cambiar un guión bajo por un espacio:
// En ocasasiones puede interesar utilizar nbsp en vez de un espacio
cadena = cadena.replace(/_/g," ");
// El mismo ejemplo con un espacio normal
cadena = cadena.replace(/_/g," ");
Ese ejemplo es utilizando expresiones regulares, pero también se puede utilizar con porciones de cadena:
cadena = 'Buenos tiempos';
cadena = cadena.replace("Buenos","Malos");
alert(cadena); // Mostraría "Malos tiempos"
Recomiendo visitar esta página para aprender a utilizar las expresiones regulares de javascript y leer los comentarios de este articulo para entender mejor el uso de replace. Antes de que me crucifiquen, ya sé que este articulo es muy simple y no explica con demasiada amplitud el uso de replace (de ahí que proponga dos enlaces para entenderlo mejor).