Sustitución de carárter "?"
Buenos días, tengo que realizar una sustitución en una cadena de la subcadena "?" por otra cadena de varios caracteres. Para ello estoy empleando el comando replaceFirst (de la fomra: cad.replaceFirst("?", obj.toString());), pero me aparece el error:
java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
¿alguien sabe cómo debo realizar esa sustitución?
MUCHAS GRACIAS
java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
¿alguien sabe cómo debo realizar esa sustitución?
MUCHAS GRACIAS
Hola raul...podria poner un poco mas de tu codigo...
Y suelo utilizar el metodo replaceAll, pero vamos que son parecidos...
Y aver xk te pa ese error...
Y suelo utilizar el metodo replaceAll, pero vamos que son parecidos...
Y aver xk te pa ese error...
Buenas tardes,
en realidad se trata de una función que lo que hace es sustituir campos,. por ejemplo la cadena de entrada es: "El usuario ? debe ?" debe devolver: "El usuario Pedro debe cerrar sesión"
Pero al hacer el replaceFirst, me da el error. La función en sí es:
private String parse(String cad, Object[] objs){
for (Object obj:objs){
cad.replaceFirst("?", obj.toString();
}
return cad;
}
Muchas gracias
en realidad se trata de una función que lo que hace es sustituir campos,. por ejemplo la cadena de entrada es: "El usuario ? debe ?" debe devolver: "El usuario Pedro debe cerrar sesión"
Pero al hacer el replaceFirst, me da el error. La función en sí es:
private String parse(String cad, Object[] objs){
for (Object obj:objs){
cad.replaceFirst("?", obj.toString();
}
return cad;
}
Muchas gracias
Aver...
cuando remplazas...yo lo que ago es:
String cadena="Hola";
cadena=cadena.replaceAll("a","o");
para que guarde lo reemplazdo en la variable...
y en cuento al lo del for no lo entiendo...si me explicas..ke es lo object : objs??
Un saludo!
cuando remplazas...yo lo que ago es:
String cadena="Hola";
cadena=cadena.replaceAll("a","o");
para que guarde lo reemplazdo en la variable...
y en cuento al lo del for no lo entiendo...si me explicas..ke es lo object : objs??
Un saludo!
Buenas tardes,
la forma de reemplazar es justamente la que indicas, y funciona casi siempre, el problema es cuando se indica como subcadena a sustituir la interrogación, en ese caso deja de funcionar.
Lo de Object[ ] objs es porque el método acepta como parámetro de entrada cuanquier tipo, ya sea String, Long, Integer, Boolan... pero luego lo convierte a cadena para devolver la correspondiente.
Muchas gracias por tu interés y ayuda
la forma de reemplazar es justamente la que indicas, y funciona casi siempre, el problema es cuando se indica como subcadena a sustituir la interrogación, en ese caso deja de funcionar.
Lo de Object[ ] objs es porque el método acepta como parámetro de entrada cuanquier tipo, ya sea String, Long, Integer, Boolan... pero luego lo convierte a cadena para devolver la correspondiente.
Muchas gracias por tu interés y ayuda
y lo de guardar la variable, porque la reemplazas pero no la guardas ne ninguna lao eso no sera y que te tire el error por algun otro lao??
Denada yo intento ayudar...
Denada yo intento ayudar...
parece cansino pero viendo otros codigos ke tengo en uno utilizo el replazeFirst....
y no se si sera por algo o no pero tengo la variable asi
cadena.replaceFirst([?],"donde");
dime si te valio o algo??
y no se si sera por algo o no pero tengo la variable asi
cadena.replaceFirst([?],"donde");
dime si te valio o algo??
Buenos días,
tranquilo que no cansas, eso que apuntas, ya lo probé y no funciona tampoco, es como si no hiciese nada.
Muchas gracias por tu ayuda :S
tranquilo que no cansas, eso que apuntas, ya lo probé y no funciona tampoco, es como si no hiciese nada.
Muchas gracias por tu ayuda :S
Buenos días, ya encontré la solución, consiste en definir unos métodos que actúan en lugar de los replace de java para caracteres especiales:
private String replaceAllString(String strOrig, String strFind, String strReplace) {
if(strOrig == null) {
return null;
}
StringBuffer sb = new StringBuffer(strOrig);
String toReplace = "";
if (strReplace == null) toReplace = "";
else toReplace = strReplace;
int pos = strOrig.length();
while (pos > -1) {
pos = strOrig.lastIndexOf(strFind, pos);
if (pos > -1) sb.replace(pos, pos+strFind.length(), toReplace);
pos = pos - strFind.length();
}
return sb.toString();
}
private String replaceFirstString(String strOrig, String strFind, String strReplace) {
if(strOrig == null) {
return null;
}
StringBuffer sb = new StringBuffer(strOrig);
String toReplace = "";
if (strReplace == null) toReplace = "";
else toReplace = strReplace;
int pos = strOrig.length();
while (pos > -1) {
pos = strOrig.lastIndexOf(strFind, pos);
if (pos > -1) {
sb.replace(pos, pos+strFind.length(), toReplace);
return sb.toString();
}
pos = pos - strFind.length();
}
return sb.toString();
}
private String replaceAllString(String strOrig, String strFind, String strReplace) {
if(strOrig == null) {
return null;
}
StringBuffer sb = new StringBuffer(strOrig);
String toReplace = "";
if (strReplace == null) toReplace = "";
else toReplace = strReplace;
int pos = strOrig.length();
while (pos > -1) {
pos = strOrig.lastIndexOf(strFind, pos);
if (pos > -1) sb.replace(pos, pos+strFind.length(), toReplace);
pos = pos - strFind.length();
}
return sb.toString();
}
private String replaceFirstString(String strOrig, String strFind, String strReplace) {
if(strOrig == null) {
return null;
}
StringBuffer sb = new StringBuffer(strOrig);
String toReplace = "";
if (strReplace == null) toReplace = "";
else toReplace = strReplace;
int pos = strOrig.length();
while (pos > -1) {
pos = strOrig.lastIndexOf(strFind, pos);
if (pos > -1) {
sb.replace(pos, pos+strFind.length(), toReplace);
return sb.toString();
}
pos = pos - strFind.length();
}
return sb.toString();
}