IT Share you

Java MessageFormat에서 중괄호를 이스케이프 할 수 있습니까?

shareyou 2020. 11. 30. 20:17
반응형

Java MessageFormat에서 중괄호를 이스케이프 할 수 있습니까?


Java MessageFormat에 일부 중괄호를 출력하고 싶습니다. 예를 들어 다음이 작동하지 않는다는 것을 알고 있습니다.

MessageFormat.format("  public {0} get{1}() {return {2};}\n\n", type, upperCamel, lowerCamel);

"return {2}"을 둘러싼 중괄호를 이스케이프하는 방법이 있습니까?


예를 들어 작은 따옴표 안에 넣을 수 있습니다.

'{'return {2};'}'

자세한 내용은 여기 를 참조하십시오.


와. 놀라다! MessageFormat에 대한 문서 는 답을 알고 있습니다.

내에서 문자열 , "''"작은 따옴표를 나타냅니다. QuotedString는 작은 따옴표를 제외한 임의의 문자를 포함 할 수 있습니다; 둘러싼 작은 따옴표가 제거됩니다. UnquotedString은 작은 따옴표와 왼쪽 중괄호를 제외한 임의의 문자를 포함 할 수 있습니다. 따라서 형식화 된 메시지를 생성해야하는 문자열 "'{0}'""'''{'0}''"또는 로 쓸 수 있습니다 "'''{0}'''".


작은 따옴표 사용 :

MessageFormat.format("  public {0} get{1}() '{'return {2};'}'\n\n",
                     type, upperCamel, lowerCamel);

실제로 작은 따옴표를 사용하려면 두 배만 사용 하면됩니다. 에 대한 javadoc에서는MessageFormat 이 다소 복잡한 예제를 제공합니다 :

따라서 형식화 된 메시지를 생성해야하는 문자열 "'{0}'""'''{'0}''" or "'''{0}'''".

이다 ''다음, 단일 견적 '{'후, 이스케이프 중괄호을 위해 0, '}'닫는 중괄호과 ''닫는 견적.


System.out.println(MessageFormat.format("I want to see ticks and curly braces around '''{'{0}'}'''", "this"));

이 정규식을 pearl 또는 다른 언어와 함께 사용하여 중괄호 및 작은 따옴표 (x27)를 이스케이프 할 수 있습니다. 자리 표시자를 건드리지 않습니다. 예 {0}:bash echo "# 'single' quote test \n\n public {0} get{1}() {return {2};}\n\n" | perl -pe 's/\x27/\x27\x27/g; s/\{([^0-9])/\x27\{\x27$1/g; s/([^0-9])\}/$1\x27\}\x27/g'

참고 URL : https://stackoverflow.com/questions/1187093/can-i-escape-braces-in-a-java-messageformat

반응형