Java에서 Java 문자열 리터럴을 이스케이프 해제하는 방법
문제
Java 소스 코드에서 문자열 리터럴을 추출하여 전달해야 할 필요성이 발생합니다. 일반 문자열을 허용하는 함수에. 문자열 리터럴을 이스케이프 해제하는 것은 매우 중요합니다. 즉, 특히 n 및 \와 같은 문자를 의도한 형식으로 변환하는 것을 의미합니다.
이스케이프 해제에 사용할 수 있는 함수 문자열
- org.apache.commons.lang.StringEscapeUtils.unescapeJava()
그러나 이 함수에는 몇 가지 제한 사항이 있습니다.
- 널 문자 표현을 무시합니다. ( )
- 8진수 이스케이프를 처리하지 않습니다
- Java 정규 표현식(예: a, e, cX)에서 허용하는 이스케이프를 처리하지 못합니다.
- 유니코드 코드 포인트에 대한 지원이 부족하고 UTF-16 문자 처리
맞춤형 솔루션: unescape_perl_string()
사용자 정의 함수인 unescape_perl_string()이 대안으로 제안됩니다.
-
모든 Java 문자열 이스케이프를 처리합니다. r, n, f, t, (그 외).
-
지원 8진수 이스케이프: , N, NN 및 기타.
-
추가 이스케이프 포함: ?cX(제어 문자), ?x{XXX}(중괄호가 있는 16진수 이스케이프).
-
Java 정규식 이스케이프 구문 분석: [IDIOT JAVA PREPROCESSOR]uXXXX.
구현 세부 정보
unescape_perl_string() 함수:
- 입력 문자열을 반복하여 다음 문자를 기반으로 이스케이프 시퀀스를 처리합니다. .
- 예를 들어 r은 캐리지 리턴으로 변환되고 n은 개행.
- 제어 문자가 지원되며 cX는 '@'을 사용하여 문자 코드 포인트의 논리적 XOR 결과를 나타냅니다.
- 16진수 이스케이프 xXX 및 x{XXX}가 올바르게 해독됩니다.
- 유니코드 코드 포인트가 인식되어 해당 문자로 변환됩니다.
- 완료되지 않았거나 유효하지 않은 이스케이프는 표시되고 오류로 보고됩니다.
위 내용은 Java 문자열 리터럴을 올바르게 이스케이프 해제하고 모든 이스케이프 시퀀스를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!