web-dev-qa-db-ja.com

プロパティファイルの等号をエスケープする方法

等号(=)in Java property files?私は自分のファイルに次のようなものを入れたい:

table.whereclause=where id=100
75
joshua

また、 load(Reader reader)javadocのPropertyクラスのメソッド を参照してください。

load(Reader reader)メソッドのドキュメントには、

キーには、最初の非空白文字で始まり、行以外の最初のエスケープされていない'='':'、または空白文字までのすべての文字が含まれます。ターミネーター。これらのキー終了文字はすべて、前のバックスラッシュ文字でエスケープすることにより、キーに含めることができます。例えば、

\:\=

":=".および\rエスケープシーケンスを使用して、2文字のキー\n行終端文字を含めることができます。キーの後の空白はスキップされます。キーの後の最初の非空白文字が'='または':'である場合、それは無視され、その後の空白文字もスキップされます。行の残りのすべての文字は、関連する要素文字列の一部になります。残りの文字がない場合、要素は空の文字列""です。キーと要素を構成する生の文字シーケンスが識別されると、上記のようにエスケープ処理が実行されます。

お役に立てば幸いです。

77
Mohd Farid

特定の例では、等号をエスケープする必要はありません-キーの一部である場合にのみエスケープする必要があります。プロパティファイル形式は、最初のエスケープされていない等号が値の一部として以降のすべての文字を扱います。

74
wrschneider

Javaのデフォルトのエスケープ文字は「\」です。
ただし、Javaプロパティファイルの形式はkey = valueであり、最初の値がvalueに等しい以降のすべてを考慮する必要があります。

21
Padmarag

この種の問題を回避する最良の方法は、プログラムでプロパティを構築してから保存することです。たとえば、次のようなコードを使用します。

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ファイルのコンテンツを生成する簡単な方法です。また、必要な数のプロパティを配置できます。

15
mvmn

私の場合、2つの先頭の「\\」が正常に機能しています。

例:Wordに「#」文字が含まれている場合(例:aa#100、2つの先頭の「\\」でエスケープできます)

   key= aa\\#100
5

こちらをご覧ください Javaプロパティのキーに空白文字を含めることができますか?

エスケープ '='の場合\ u003d

table.whereclause = where id = 100

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

table.whereclause\u003dwhere id = 100

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

table.whereclause\u003dwhere\u0020id\u003d100

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

SpringまたはSpringブートのapplication.propertiesファイルは、特殊文字をエスケープする方法です。

table.whereclause = where id '\ =' 100

0
sent.ror