UFO ET IT

Java에서 MessageFormat.format ()을 사용하여 메시지 형식 지정

ufoet 2020. 12. 15. 19:35
반응형

Java에서 MessageFormat.format ()을 사용하여 메시지 형식 지정


리소스 번들에 일부 메시지를 저장했습니다. 이 메시지를 다음과 같이 형식화하려고합니다.

import java.text.MessageFormat;

String text = MessageFormat.format("You're about to delete {0} rows.", 5);
System.out.println(text);

첫 번째 매개 변수, 즉 실제 메시지가 어떻게 든 검색되는 속성 파일에 저장되어 있다고 가정합니다.

두 번째 매개 변수 인 5는 동적 값이며 {0}발생하지 않는 자리 표시 자에 배치해야합니다 . 다음 줄이 인쇄됩니다.

{0} 개의 행을 삭제하려고합니다.

자리 표시자는 실제 매개 변수로 대체되지 않습니다.


여기서 아포스트로피 You're입니다. 나는 You\\'re그것이 작동하지 않는 것처럼 평소처럼 그것을 탈출하려고 노력 했습니다. 작동하려면 어떤 변경이 필요합니까?


문자가 표시 되도록 패턴 추가 아포스트로피 '추가하십시오.MessageFormatString'

String text = 
     java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
                                         ^

MessageFormat 패턴 의 아포스트로피 (일명 작은 따옴표 )는 인용 된 문자열을 시작하며 자체적으로 해석되지 않습니다. 로부터 의 javadoc

작은 따옴표 자체는 문자열 전체에서 큰 작은 따옴표 ''로 표시되어야합니다.

String You\\'re받는 백 슬래시 문자를 추가하는 것과 동일한 결과를 얻을 수 String있는 유일한 차이가 수 있도록 You\re보다 생산 될 것이다 Youre. (큰 따옴표 솔루션 ''적용 전)


이중 아포스트로피 ( '')를 사용했는지 확인하십시오.

String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
System.out.println(text);

편집하다:

문자열 내에서 작은 따옴표 쌍을 사용하여 작은 따옴표를 제외한 임의의 문자를 인용 할 수 있습니다. 예를 들어, 패턴 문자열 " '{0}'"는 FormatElement가 아니라 문자열 "{0}"을 나타냅니다. ...

일치하지 않는 따옴표는 주어진 패턴의 끝에서 닫힌 것으로 처리됩니다. 예를 들어, 패턴 문자열 " ' {0}"은 (는) 패턴 " ' {0} ' "으로 처리됩니다.

소스 http://docs.oracle.com/javase/7/docs/api/java/text/MessageFormat.html


"You''re"에서 단일 대신 이중 아포스트로피를 사용해야합니다. 예 :

String text = java.text.MessageFormat.format("You''re about to delete {0} rows.", 5);
System.out.println(text);

string.xml에 Android 문제가있는 모든 사람은 작은 따옴표 대신 \ '\'를 사용하십시오.


작은 따옴표 대신 아포스트로피 (유니 코드 :)를 사용 하면 .\u2019'\'

참조 URL : https://stackoverflow.com/questions/17569608/format-a-message-using-messageformat-format-in-java

반응형