Codigo que estraiga de una cadena las palabras que empiecen por otra cadena

Iniciado por Javator, 21 Febrero 2014, 23:04 PM

0 Miembros y 1 Visitante están viendo este tema.

Javator

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.

1mpuls0

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);
   }
   
}
abc

Javator

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.

1mpuls0

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);
abc

Javator

Gracias Darhius, me pongo a juguetear con el para comprender bien como funciona cada segmento.

Otra vez, gracias. ;-)