2011-01-28 3 views
0

특수한 정규 표현식 문자가 포함 된 문자열 교체에 어려움을 겪고 있습니다. 파일에서 구분 기호 목록을 얻었으므로 이러한 문자의 이스케이프 된 형식을 이스케이프 처리되지 않은 문자로 바꾸어야합니다.Java 문자열에서 F 바꾸기

매핑 테이블은 다음과 같습니다. 파일을 파싱 한 후에 이스케이프 문자를 알 수 있으므로 대체 문자열을 하드 코딩 할 수 없습니다.

escapeChar + F + escapeChar <=> sep1 
escapeChar + S + escapeChar <=> sep2 
escapeChar + T + escapeChar <=> sep3 
escapeChar + R + escapeChar <=> sep4 
escapeChar + E + escapeChar <=> escapeChar 

은의이 파일을 구문 분석하고 입력되면 그래서 \F\\S\\T\\R\\E\에 따라 다음 구분
sep1 = | 
sep2 =^
sep3 = & 
sep4 = $ 
sep5 = \ 

에 당신이 가지고있는 파일을 구문 분석 한 후 그 말을 보자.

String sep1 = "|"; 
String escapeChar = "\\"; 
String x = "\\F\\\\S\\\\T\\\\R\\\\E\\"; 
x.replaceAll(Pattern.quote(escapeChar) + "F" 
     + Pattern.quote(escapeChar), sep1); 
System.out.println(x); 

답변

2

문자열은 자바 불변 : 그것은 다음 코드는 (난 그냥 처음 분리와 시도) 작동하지 않습니다 |^&$\

로 번역되어야한다. String.replaceAll은 기존 문자열의 내용을 변경하는 대신 대체 문자열을 사용하여 새 문자열을 반환합니다. 시도해보십시오 :

x = x.replaceAll(...); 

당신이하려는 일을 이해한다고 가정하면 정상적으로 작동하는 것 같습니다.

+0

너무 많은 비슷한 대답과 질문이 하나 있습니다. –

관련 문제