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.
| ||||
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" |
| |||
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. |
| ||||
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" |
| |||
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(); } |
| |||
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 |