Java에서 문자열의 점 (.)을 바꾸는 방법


87

나는 문자열이 persons.name

나는 DOT를 대체 할 .함께 /*/ 내 출력됩니다 즉,persons/*/name

이 코드를 시도했습니다.

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

StringIndexOutOfBoundsException이 발생합니다.

점은 어떻게 바꾸나요?

답변:


147

점 앞에 두 개의 백 슬래시가 필요합니다. 하나는 슬래시를 이스케이프하여 통과하도록하고 다른 하나는 점을 이스케이프하여 문자가되도록합니다. 슬래시와 별표는 리터럴로 처리됩니다.

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
xpath.replaceAll("\\\\.", "/*/")그래?
ha9u63ar

10

간단한 문자열을 대체 할 당신이 정규 표현식의 능력을 필요로하지 않는 경우, 당신은 사용할 수 있습니다 replace, 없습니다 replaceAll.

replace 일치하는 각 하위 문자열을 대체하지만 해당 인수를 정규 표현식으로 해석하지 않습니다.

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

1
이것은 받아 들여진 대답이어야합니다, IMO.
Aaron Lehmann

9

사용 아파치 코 몬즈 랭 :

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

또는 독립형 JDK 사용 :

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.