Foros del Web » Programación para mayores de 30 ;) » Java »

Simular el replaceAll

Estas en el tema de Simular el replaceAll en el foro de Java en Foros del Web. Hola. Estoy con la plataforma J2SE 1.3.1 que no tiene el metodo replaceAll, y no puedo encontrar en ningun lado otra manera de hacerlo. Alguien ...
  #1 (permalink)  
Antiguo 25/11/2005, 13:12
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 22 años
Puntos: 6
Simular el replaceAll

Hola. Estoy con la plataforma J2SE 1.3.1 que no tiene el metodo replaceAll, y no puedo encontrar en ningun lado otra manera de hacerlo.

Alguien tiene armado algo que simule este metodo?
Lo necesito con urgencia.

Gracias.
__________________
"Vivir....solo cuesta Vida"
  #2 (permalink)  
Antiguo 25/11/2005, 13:31
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 22 años
Puntos: 6
Ya lo encontre.
Lo dejo para que lo usen.

Código:
protected String replaceAll(String object, String target, String replacement, int curIndex) { 
	  int indexOfMatch = object.indexOf(target, curIndex); 
	  if (indexOfMatch < curIndex) { 
	      return object; 
	  } 
	  String prefix = ""; 
	  if (indexOfMatch > 0) { 
	      prefix = object.substring(0, indexOfMatch); 
	  } 
	  String tail = object.substring(indexOfMatch + target.length()); 
	  String newObject = prefix + replacement + tail; 
	  return replaceAll(newObject, target, replacement, indexOfMatch + replacement.length()); 
}
__________________
"Vivir....solo cuesta Vida"
  #3 (permalink)  
Antiguo 25/11/2005, 14:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
El metodo puede que funcione, pero es bastante deficiente en cuanto al uso de Strings. Aparte de que hace una comprobacion "if (indexOfMatch > 0)" y si no lo encuentra el resultado es "-1", así que si da un "0" lo ha encontrado al principio de la palabra.... no se, no suena muy fiable.
  #4 (permalink)  
Antiguo 25/11/2005, 14:49
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 22 años
Puntos: 6
Asi es como implementa el metodo realmente la plataforma.

Igualmente no se cual es el problema del -1, ya que para encontrar una palabra utiliza el indexof y tiene que devolver 0 por si encuentra en la primera posicion.
__________________
"Vivir....solo cuesta Vida"
  #5 (permalink)  
Antiguo 25/11/2005, 14:57
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Personalmente me gusta más usar StringBuffer, tal que así:
Código:
  static String replace(String original, String replaced, String replacement)
  {
    StringBuffer theSB = new StringBuffer(original);
    int baseIndex = 0;
    int badSignIndex = 0;
    while ((badSignIndex = original.indexOf(replaced, badSignIndex)) != -1)
    {
      theSB.delete(badSignIndex + baseIndex, badSignIndex + baseIndex
          + replaced.length());
      theSB.insert(badSignIndex + baseIndex, replacement);
      baseIndex = baseIndex + replacement.length() - replaced.length();
      badSignIndex = badSignIndex + replaced.length();
    }
    return theSB.toString();
  }
  #6 (permalink)  
Antiguo 25/11/2005, 15:01
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Ese no puede ser el codigo del JDK, puesto que el metodo del JDK recibe como parametro una expresión regular y ese metodo no usa para nada expresiones regulares.
Además de que si así fuera eso habría que fusilar al programador de Sun que introdujo semejante engendro en el JDK oficial
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:06.