Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/05/2009, 02:49
Avatar de AnesGy
AnesGy
 
Fecha de Ingreso: mayo-2009
Mensajes: 518
Antigüedad: 15 años, 8 meses
Puntos: 19
Respuesta: Como sacar las primeras letras de un frase

Nunca he usado expresiones regulares en javascript (al menos como en php), pero en php sería así (creo que las expresiones regulares no cambian entre sistemas, pero quien sabe.

Expresión regular /([A-Za-z])([A-Za-z0-9]+)/

A reemplazar por $1

$1 hace referencia al primer (), que contiene la primera letra.


Si bien no me equivoco, para que el sistema funcione en javascript hay que poner g al final del patrón (para que sea búsqueda global).

Ahora lo pruebo y te digo.

------------------------

Ya está:

Código:
<script type="text/javascript">
txt="Desoxiribo-Nucleicic Acid";
document.write(txt+"<br/>"+txt.replace(/([A-Za-z])([A-Za-z0-9]+)(\-|\s|$)/g, "$1"));
</script>
en forma de función

Código:
function acronym(txt){
 return txt.replace(/([A-Za-z])([A-Za-z0-9]+)(\-|\s|$)/g, "$1");
}
Explicación:

([A-Za-z]) :Busca la primera letra (y por ser el primer paréntesis lo guarda en $1. Como no hay un + después del ] (como en el siguiente) no busca mas que una letra.

([A-Za-z0-9]+): Busca el resto de letras de la palabra. Las palabras no pueden tener tildes, que se arregla añadiendo ÁÉÍÓÚáéíóú detrás del 9 (para que la primera letra pueda tener tildes se hace lo mismo).

(\-|\s|$) :Busca hasta el final de la palabra, determinado por un gión (\-), un espacio (\s) o el final de la cadena ($). El inicio de una cadena es ^.

Añadiendo las tildes:

Código:
function acronym(txt){
 return txt.replace(/([A-Za-zÁÉÍÓÚáéíóú])([A-Za-z0-9ÁÉÍÓÚáéíóú]+)(\-|\s|$)/g, "$1");
}
Las tildes tienen un fallo por que los acrónimos no se acentúan (perderían su corrección). Ergo:

Código javascript:
Ver original
  1. function acronym(txt){
  2.  var result = txt.replace(/([A-Za-zÁÉÍÓÚáéíóú])([A-Za-z0-9ÁÉÍÓÚáéíóú]+)(\-|\s|$)/g, "$1");
  3.  result = result.replace(/Á/,"A")
  4.  result = result.replace(/É/,"E")
  5.  result = result.replace(/Í/,"I")
  6.  result = result.replace(/Ó/,"O")
  7.  result = result.replace(/Ú/,"U")
  8.  result = result.replace(/á/,"a")
  9.  result = result.replace(/é/,"e")
  10.  result = result.replace(/í/,"i")
  11.  result = result.replace(/ó/,"o")
  12.  result = result.replace(/ú/,"u")
  13.  return result;
  14. }

Este script lo produce (está mejorado del anterior).

Última edición por AnesGy; 04/05/2009 a las 03:11 Razón: Hallé el códgio