feed twitter facebook LinkedIn facebook

Java » Contador de Ocurrencias en Java

agosto 19, 2007 por Víctor Cuervo 10 Comentarios Imprimir Imprimir

La idea consiste en ver cuantas veces se repite una ocurrencia (o palabra) dentro de una frase utilizando el lenguaje Java.

Para buscar el texto dentro de una frase utilizaremos la función .indexOf() la cual devuelve la posición de la cadena a partir de la cual empieza la cadena buscada. En el caso de que no encuentre la cadena devolverá el valor -1.

sTexto.indexOf(sCadenaBuscada);

Esto solamente nos devolvería la posición de la primera ocurrencia de la frase.

Para poder evaluar si la ocurrencia aparece más veces debemos de repetir la búsqueda del indexOf sobre el resto de la frase. Es por ello que nos quedaremos con un substring desde la posición en que termina la primera ocurrencia (indexOf(Ocurrencia) + Ocurrencia.length()) hasta el final del texto (sTexto.length).

sTexto = sTexto.substring(sTexto.indexOf(
	      sTextoBuscado)+sTextoBuscado.length(),sTexto.length());

Sobre esta nueva cadena volveremos a realizar la búsqueda de la ocurrencia. Esto lo repetiremos hasta que el la función .indexOf() nos retorne -1.

while (sTexto.indexOf(sTextoBuscado) > -1) {
      sTexto = sTexto.substring(sTexto.indexOf(
        sTextoBuscado)+sTextoBuscado.length(),sTexto.length());
      contador++; 
}

Visualizar el ejemplo | Descargar el código

tags: , , , ,

Artículos relacionados:

10 comentarios »

RSS feed para los comentarios de esta entrada. TrackBack URI

  1. Linea de Codigo » Java y la palabra más larga de una frase
    agosto 26, 2007 #

    [...] Lo más recomendable es empezar leyéndose dos artículos: Contar palabras en Java y Contador de ocurrencias en Java. Estos nos explican como se pude saber cuantas palabras componen una cadena y cuales son. Uno de ellos mediante el uso del StrinkTokenizer y el otro mediante .indexOf(). [...]

  2. juan carlos
    octubre 2, 2007 #

    quiero crear un programa en pascal que enumere numeros primos segun se les identifique.

  3. Victoria
    mayo 26, 2008 #

    Muchas gracias por explicar cómo usar indexOf!! estube buscando por un montón de lados y la explicación q entendí fue la de esta página :)

  4. Andres
    septiembre 20, 2008 #

    Alguien sabe si el metodo indexOf implementa el equals para ralizar la busqueda……Gracias

  5. Carlos Pirela
    septiembre 22, 2008 #

    no entiendo nada y nececito eso :S solo me piden
    NUMERO DE PALABRAS EN UNA FRASE estoy trabajando con TexPad y Java

  6. Julian Ramos
    diciembre 14, 2008 #

    no lo hubiese entendido de verdad que si esta bien desmenusado para entender, mucha gente que se dedica que ha explicar y humm
    dificilmente le cojo terminales gracias hermanito.

  7. kioko
    marzo 12, 2009 #

    el codigo que ponen no sirve ya que no hace una verdader comparacion por ejemplo se esta comparando ‘palabra’ pero si se agresa letras a la frase por ejemplo “”palabra1111 o palabra2 y palabra3″; a esta frase solo agregue numeros y el contador lo incrementa diciendome que la palabra se encuentra, sindo palabra1 diferente a palabra

  8. William
    marzo 23, 2009 #

    Tres versiones del mismo programa incluyendo la mencionada
    Trate de hacerlo con Split pero no me funciono
    si alguien sabe ciomo posteelo por facor
    public static int nroVeces(String frase,String palabra){
    int r=0;
    int pos=0;
    String temp=frase;
    pos = temp.indexOf(palabra);
    int x=0;
    while(pos>=0){
    r++;
    x= pos +palabra.length()+1;
    temp=temp.substring(x);

    pos = temp.indexOf(palabra);
    }
    return r;
    }
    public static int nroVecesR(String frase,String palabra){
    int pos =0;
    pos = frase.indexOf(palabra);
    if(pos>=0){
    return 1+ nroVecesR(frase.substring(pos+palabra.length()+1),palabra);
    }
    else
    return 0;
    }

    public static int nroVecesT(String frase,String palabra){
    int r=0;
    StringTokenizer temp= new StringTokenizer(frase,” ,;.”);
    String stpalabra =”";
    while(temp.hasMoreTokens()){
    stpalabra = temp.nextToken();
    if(stpalabra.compareTo(palabra)==0)
    r++;
    }
    return r;
    }

  9. chiki
    febrero 13, 2014 #

    Gracias por la explicación, muy entendible. Busqué en otros sitios pero no entendía. Gracias por la aportación :)

  10. Víctor Cuervo
    febrero 28, 2014 #

    @chiki,

    Me alegro que te haya servido. :-D

Deja un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*