Cách thay thế dấu chấm (.) Trong một chuỗi trong Java


87

Tôi có một chuỗi được gọi là persons.name

Tôi muốn thay thế DOT .bằng /*/ tức là đầu ra của tôi sẽ làpersons/*/name

Tôi đã thử mã này:

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

Tôi đang nhận được StringIndexOutOfBoundsException.

Làm cách nào để thay thế dấu chấm?

Câu trả lời:


147

Bạn cần hai dấu gạch chéo ngược trước dấu chấm, một để thoát khỏi dấu gạch chéo để nó đi qua và dấu kia để thoát khỏi dấu chấm để nó trở thành nghĩa đen. Các dấu gạch chéo và dấu hoa thị chuyển tiếp được coi là theo nghĩa đen.

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
không nên xpath.replaceAll("\\\\.", "/*/")sao?
ha9u63ar 29/09/17

9

Sử dụng Apache Commons Lang :

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

hoặc với JDK độc lập:

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

8

Nếu bạn muốn thay thế một chuỗi đơn giản và bạn không cần các khả năng của biểu thức chính quy, bạn chỉ có thể sử dụng replacechứ không phải replaceAll.

replace thay thế mỗi chuỗi con phù hợp nhưng không giải thích đối số của nó như một biểu thức chính quy.

str = xpath.replace(".", "/*/");

1
Đây phải là câu trả lời được chấp nhận, IMO.
Aaron Lehmann

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.