2011-09-11 20 views
62

tengo una cadena denominada persons.nameCómo reemplazar punto en una cadena en Java

que desea reemplazar el DOT . con /*/ es decir, mi salida será persons/*/name

yo probamos este código (.):

String a="\\*\\"; 
str=xpath.replaceAll("\\.", a); 

Estoy obteniendo StringIndexOutOfBoundsException.

¿Cómo reemplazo el punto?

Respuesta

106

Necesita dos barras diagonales inversas antes del punto, una para escapar de la barra oblicua, y la otra para escapar del punto para que se vuelva literal. Las barras diagonales y el asterisco se tratan literalmente.

str=xpath.replaceAll("\\.", "/*/");   //replaces a literal . with /*/ 

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceAll(java.lang.String,%20java.lang.String)

+1

+1 porque No requiere ninguna importación para operar –

+0

¿No debería ser ' xpath.replaceAll ("\\\\.", "/ * /") ' – ha9u63ar

7

Uso Apache Commons Lang:

String a= "\\*\\"; 
str = StringUtils.replace(xpath, ".", a); 

o con JDK independiente:

String a = "\\*\\"; // or: String a = "/*/"; 
String replacement = Matcher.quoteReplacement(a); 
String searchString = Pattern.quote("."); 
String str = xpath.replaceAll(searchString, replacement); 
Cuestiones relacionadas