Alguien tiene armado algo que simule este metodo?
Lo necesito con urgencia.
Gracias.
|
|
#1 (permalink) |
![]() |
Simular el replaceAll
Alguien tiene armado algo que simule este metodo? Lo necesito con urgencia. Gracias.
__________________
"Vivir....solo cuesta Vida" |
|
|
|
|
|
#2 (permalink) |
![]() |
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) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 2.615
|
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) |
![]() |
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) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 2.615
|
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) |
![]() Fecha de Ingreso: octubre-2003
Mensajes: 2.615
|
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 ![]() |
|
|
|