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

Sustitución de carárter "?"

Estas en el tema de Sustitución de carárter "?" en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/02/2010, 01:57
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
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 forma: 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,
  #2 (permalink)  
Antiguo 19/02/2010, 02:30
 
Fecha de Ingreso: julio-2009
Mensajes: 3
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Sustitución de carárter "?"

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();
}
  #3 (permalink)  
Antiguo 19/02/2010, 02:38
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 16 años, 2 meses
Puntos: 188
Respuesta: Sustitución de carárter "?"

Si te refieres a sustituirlo en una consulta SQL, por ejemplo, tendrias la consulta.

String Consulta = SELECT .... FROM ... WHERE ALGO = ? AND ALGOMAS = ?;

Creas el statement... (objeto stmnt)

int i = 1;

stmnt.setString(i++,"stringqsustityealprimer?");
stmnt.setInt(i++,intquesustituyealsegundo?);

...

Última edición por Fuzzylog; 19/02/2010 a las 02:39 Razón: Pues no, no era para consultas xD.
  #4 (permalink)  
Antiguo 19/02/2010, 04:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 1 mes
Puntos: 51
Respuesta: Sustitución de carárter "?"

No hace falta complicarse tanto. Leyendo el API y el mensaje de error uno se puede dar cuenta que el problema es que el parametro que se le pasa al replace es una expresion regular y que ? es un caracter especial para las expresiones regulares, así que hay que codificarlo (escaparlo).

Cita:
"lo que sea ? ? ".replaceFirst("\\?", "*")
Y listo.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: carárter, sustitución
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 14:20.