Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Javator en 21 Febrero 2014, 23:04 PM

Título: Codigo que estraiga de una cadena las palabras que empiecen por otra cadena
Publicado por: Javator en 21 Febrero 2014, 23:04 PM
Hola compañeros:

Estoy intentando hacer un codigo que estraiga de una cadena las palabras que empiecen por otra cadena.

Por ejemplo "casota,agua,casita,macarena" y en otra cadena "cas", pues que me saque casota y casita.

Hasta ahora tengo esto y no se como seguir  :-\


/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package javaapplication1;

/**
*
* @author JUSEF
*/
public class JavaApplication1 {

   /**
    * @param args the command line arguments
    * @return
    */
   public static void main(String[] args) {
       String cadena = "hola holita hooll macarena";
       String cad = "hol";
       String result = "";
       String espacio = "";
       int c = 0;
       for (int i=0; i < cad.length(); i++){
           if (cadena.charAt(i) == cad.charAt(i)){
               result += cadena.charAt(i);
           }else{
               break;
           }
       }
       System.out.println(result);
   }
   
}




Como sigo?? Se me ocurre que con un split o un substring contar hasta el espacio, (de ahi la variable espacio), una ayudita.
Título: Re: Codigo que estraiga de una cadena las palabras que empiecen por otra cadena
Publicado por: 1mpuls0 en 21 Febrero 2014, 23:16 PM
Código (java) [Seleccionar]

//Autor: 1mpuls0

public class Extract {
   
   public static void main(String args[]) {
       String string = "casota, agua, casita, macarena, casco";
       String key = "cas";
       String separator = ",";
       String result = "";
       
       String[] array = string.split(",");
       
       for (int index = 0; index < array.length; index++) {
           if(array[index].trim().startsWith(key)) {
               result+=array[index]+separator;
           }
       }
       System.out.println(result);
   }
   
}
Título: Re: Codigo que estraiga de una cadena las palabras que empiecen por otra cadena
Publicado por: Javator en 24 Febrero 2014, 22:11 PM
Gracias Darhius, pero asi lo hice en clase y me lleve una colleja por hacerlo con arrays :-(

El tema es que tenemos que hacerlo sin arrays para practicar con substring, indexOf y charAt´s. De hecho luego tenemos que extraer fechas sin expresiones regulares tipo

ñafdjasñlfkg28/10/2009ñlgkfasfdgadsñfl21/12/2001asfdga

pretendiendo que cojamos las barras como "punto de parada" y cojamos -2 y +8.

Donde me lío es cuando se encuentra el prefijo, como adjunto el resto de letras, y como hago que siga leyendo.

Le he dado un millon de vueltas al for pero no doy con la forma.

Gracias nuevamente.
Título: Re: Codigo que estraiga de una cadena las palabras que empiecen por otra cadena
Publicado por: 1mpuls0 en 25 Febrero 2014, 01:05 AM
Ah! ps no dices! xD

Es lo único que se me ocurre :/ no me gusta mucho pero por el momento es funcional.

Código (java) [Seleccionar]

//Autor Darhius929
String text = "casota, agua, casita, macarena, casco";
        int countChar = 0;
        char separator = ',';
        String result = "";
        String key = "cas";

        int index = 0;
        do {
          ++countChar;
          ++index;
          index = text.indexOf(separator, index);
        } while (index != -1);
       
        index = 0;
        int endIndex = 0;
        for (int i = 0; i < countChar; i++) {
          endIndex = text.indexOf(separator, index);
          if (endIndex == -1) {
              if(text.substring(index).trim().startsWith(key))
            result+= text.substring(index);
          }

          else {
              if(text.substring(index, endIndex).trim().startsWith(key))
                    result+= text.substring(index, endIndex);
          }
           
          index = endIndex + 1;
        }

        System.out.println(result);
Título: Re: Codigo que estraiga de una cadena las palabras que empiecen por otra cadena
Publicado por: Javator en 25 Febrero 2014, 17:09 PM
Gracias Darhius, me pongo a juguetear con el para comprender bien como funciona cada segmento.

Otra vez, gracias. ;-)