[java] 속성 파일에서 등호 기호를 이스케이프하는 방법

=Java 속성 파일에서 등호 ( )를 어떻게 이스케이프 할 수 있습니까? 내 파일에 다음과 같은 내용을 넣고 싶습니다.

table.whereclause=where id=100



답변

또한 javadoc의 클래스에서 load (Reader reader) 메소드를 참조하십시오.Property

에서 load(Reader reader)방법 문서가 말한다

열쇠는 최초의 비 공백 문자 및 최대 시작하는 줄의 문자를 모두 포함하고 있지만, 최초의 이스케이프를 포함하지 않는
'=', ':'또는 줄 끝 이외의 공백 문자를. 이러한 모든 키 종료 문자는 앞의 백 슬래시 문자로 이스케이프하여 키에 포함될 수 있습니다. 예를 들면

\:\=

두 문자 키가됩니다. ":=".
줄 종결 문자는 \r\n이스케이프 시퀀스를 사용하여 포함될 수 있습니다 . 키 뒤의 공백은 건너 뜁니다. 키 뒤의 공백이 아닌 첫 번째 문자가 '='
또는 ':'이면 무시되고 그 뒤의 공백 문자도 건너 뜁니다. 행의 나머지 모든 문자는 연관된 요소 문자열의 일부가됩니다. 남은 문자가없는 경우 요소는 빈 문자열 ""입니다. 키와 요소를 구성하는 원시 문자 시퀀스가 ​​식별되면 위에서 설명한대로 이스케이프 처리가 수행됩니다.

도움이되기를 바랍니다.


답변

특정 예에서는 등호를 이스케이프 할 필요가 없습니다. 키의 일부인 경우에만 이스케이프하면됩니다. 특성 파일 형식은 첫 번째 이스케이프 처리되지 않은 다음의 모든 문자를 값의 일부로 처리합니다.


답변

Java의 기본 이스케이프 문자는 ‘\’입니다.
그러나 Java 속성 파일의 형식은 key = value이므로 첫 번째 이후의 모든 것을 값으로 간주해야합니다.


답변

이러한 종류의 문제를 피하는 가장 좋은 방법은 프로그래밍 방식으로 속성을 빌드 한 다음 저장하는 것입니다. 예를 들어 다음과 같은 코드를 사용합니다.

java.util.Properties props = new java.util.Properties();
props.setProperty("table.whereclause", "where id=100");
props.store(System.out, null);

이것은 적절하게 이스케이프 된 버전을 System.out에 출력합니다.

제 경우 출력은 다음과 같습니다.

#Mon Aug 12 13:50:56 EEST 2013
table.whereclause=where id\=100

보시다시피 이것은 정확하다고 보장되는 .properties 파일의 콘텐츠를 생성하는 쉬운 방법입니다. 그리고 원하는만큼 많은 속성을 넣을 수 있습니다.


답변

제 경우에는 두 개의 선행 ‘\\’가 잘 작동합니다.

예 : 단어에 ‘#’문자가 포함 된 경우 (예 : aa # 100) 두 개의 선행 ‘\\’로 이스케이프 할 수 있습니다.

   key= aa\\#100


답변

여기에서 볼 수 있습니다 . Java 속성의 키에 공백 문자가 포함될 수 있습니까?

이스케이프 ‘=’\ u003d

table.whereclause = 여기서 id = 100

key : [table.whereclause] 값 : [여기서 id = 100]

table.whereclause \ u003d 여기서 id = 100

키 : [table.whereclause = where] 값 : [id = 100]

table.whereclause \ u003dwhere \ u0020id \ u003d100

key : [table.whereclause = where id = 100] 값 : []


답변

Spring 또는 Spring 부트에서 application.properties 파일은 특수 문자를 이스케이프하는 방법입니다.

table.whereclause = where id ‘\ =’100