Javaプロパティのキーには、空白のキャラクターを含めることはできますか?
-
22-09-2019 - |
質問
データベースからプロパティ(影響を与えられない)を取得しており、キー/値マッピングによってそれらにアクセスしたいと考えています。プロパティキーの1つに空白の文字が含まれているという問題に直面しています。
foo bar = barefoot
これは - 正しく - 次のように解釈されます
key: foo
value: bar = barefoot
キーに空白を含める方法はありますか?この動作は意図したと同じだと思いますが、ここで試してみることができると思いました。
解決
デリミッターはそうあるべきだと思われます =
, 、スペースではありません。したがって - keyValuePair.split("=")
やるべきです。
Javaからこれをロードしている場合 .properties
ファイル、その後、拡張できます java.util.Properties
この方法をオーバーライドします
public synchronized void load(InputStream inStream) throws IOException
そのため、プロパティを正しく解析します。
他のヒント
Java Unicodeを使用して、プロパティファイル内のすべてのものをエスケープすることができます。
\u003d
為に=
\u0020
空白の場合
例えば:
foo bar = barefoot
でなければなりません:
foo\u0020bar\u0020=\u0020barefoot
だから:
key: "foo bar "
value: " barefoot"
たぶんあなたは空白から逃げることができます: foo\ bar = barefoot
編集:おっと、プロパティを変更できないことがわかりませんでした。
「プロパティ」とは、Javaプロパティファイルを意味します(書かれている/読むと java.util.Properties
).
それから、あなたが自分自身を書くとき、
foo bar = barefoot
確かにと解釈されなければなりません
key: foo
value: bar = barefoot
組み込みを使用してこれを構成する方法はありません Properties
クラス。入力を操作し(空白を逃がすか、_とバックに変更...)、または独自のパーサーを書く必要があります。明らかにあなたの入力は実際にはJavaプロパティファイルではないので、あなた自身のパーサーを書く方がおそらく優れています:-)。
keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") +
keyValuePair.substring(indexOf("="));