> Java > java지도 시간 > Java 문자열 리터럴을 효과적으로 이스케이프 해제하는 방법은 무엇입니까?

Java 문자열 리터럴을 효과적으로 이스케이프 해제하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-12-16 03:06:13
원래의
107명이 탐색했습니다.

How to Effectively Unescape Java String Literals?

Java에서 Java 문자열 리터럴을 이스케이프 해제하는 방법

문제:

Java에는 Java 문자열 리터럴이 있습니다. 이스케이프되지 않은 문자열이 필요한 함수에 전달되기 전에 이스케이프 해제가 필요한 문자열(예: n을 개행 문자로 변환하고 ).

해결책:

Java에는 이에 대한 내장 기능이 없지만 사용 가능한 옵션이 있습니다.

1 . [Commons Lang StringEscapeUtils](https://commons.apache.org/proper/commons-lang/javadocs/api-3.12/org/apache/commons/lang3/StringEscapeUtils.html)**:

이 라이브러리는 unescapeJava() 메서드를 제공합니다. 그러나 제한 사항이 있습니다(예: null에 대한 잊어버림).

2. 사용자 정의 Unescape 함수:

Commons Lang 방법의 한계를 해결하여 문제를 해결하기 위해 사용자 정의 함수를 작성할 수 있습니다. 다음은 사용자 정의 솔루션의 예입니다.

public static String unescapeJavaString(String oldstr) {
    // Initialize variables
    StringBuilder newstr = new StringBuilder(oldstr.length());
    boolean saw_backslash = false;

    for (int i = 0; i < oldstr.length(); i++) {
        int cp = oldstr.codePointAt(i);

        // Handle UTF-16 code units
        if (oldstr.codePointAt(i) > Character.MAX_VALUE) {
            i++;
        }

        // Process characters
        if (!saw_backslash) {
            if (cp == '\') {
                saw_backslash = true;
            } else {
                newstr.append(Character.toChars(cp));
            }
            continue;
        }

        // Handle backslash sequences
        if (cp == '\') {
            saw_backslash = false;
            newstr.append('\');
            newstr.append('\');
            continue;
        }

        // Handle specific escape sequences
        switch (cp) {
            case 'r':
                newstr.append('\r');
                break;
            case 'n':
                newstr.append('\n');
                break;
            case 'f':
                newstr.append('\f');
                break;
            // Handle other escape sequences as needed
            // ...
        }

        saw_backslash = false;
    }

    // Append any remaining characters
    if (saw_backslash) {
        newstr.append('\');
    }

    return newstr.toString();
}
로그인 후 복사

이 사용자 정의 함수는 Commons Lang 방법에서 지원되지 않는 문자열을 포함하여 다양한 이스케이프 시퀀스를 처리합니다.

추가 고려 사항:

  • 다양한 이스케이프 시퀀스를 사용하여 이스케이프 해제 기능을 테스트하여 다음을 확인하세요. 정확성.
  • 사용 중인 프로그래밍 언어에서 특별한 의미를 가질 수 있는 이스케이프 문자에 주의하세요.

위 내용은 Java 문자열 리터럴을 효과적으로 이스케이프 해제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿