2016-08-04 4 views
-2

의 문자열에 내가교체 "^"자바

String slash_data=cap_data.replaceAll("/", "%2F"); 

그러나 "^"그것은 그 위치에 대체하지 않습니다의 교체시 사용하는 문자열의 다른 문자를 교체합니다.

String string_data="058000657^HELLO HI /" 
String cap_data=string_data.replaceAll("^", "%5E"); 

무엇이 잘못 되었나요?

+1

탈출은'replaceAll'는 정규식 ... – Tunaki

+3

'문자열 capData = stringData.replace ("^", "%의 5E")를한다;'... – Reimeus

+0

를 @ Reimeus 내가 했어, 나는 바보 야 : D 죄송합니다 – f1sh

답변

4

replaceAll 메서드는 리터럴 문자열이 아닌 정규 표현식을 사용하고 ^은 "현재 줄 시작"을 나타내는 일반 표현식 기호입니다. 따라서 실제로는 ^ 문자를 전혀 찾지 않습니다.

^ 문자를 이스케이프 처리해야합니다 (시도 \\^).

문자열의 단일 백 슬래시가 이스케이프 문자의 역할을하므로 ^이 오는 단일 백 슬래시로 구성된 문자열이 필요하지만 소스에 단일 백 슬래시를 작성하는 방법 코드는 \\입니다. 백 슬래시를 벗어나야하기 때문에 ...)

+0

설명 주셔서 감사합니다 .. 지금 나는 그것을 얻었다. –

+0

하지만 작동하지 않습니다 .. Reimeus 대답 작품 .. Logged –

3

^은 정규 표현식의 특수 문자입니다. 그것은 문자열의 시작을 의미합니다. 그래서 당신은 그것을 탈출해야 :

String cap_data=string_data.replaceAll("\\^", "%5E");