44

データベースからプロパティ (影響を与えることはできません) を取得しており、キーと値のマッピングによってそれらにアクセスしたいと考えています。プロパティ キーの 1 つに空白文字が含まれているという問題に直面しています。

foo bar = barefoot

これは - 正しく - 次のように解釈されます

key: foo
value: bar = barefoot

区切り文字として解釈されないように、キーに空白を含める方法はありますか? この動作は意図したとおりだと思いますが、ここで試してみることができると思いました。

4

5 に答える 5

166

Java Unicodeを使用すると、プロパティファイル内のすべてのものをエスケープできます。

  • \u003dにとって=
  • \u0020空白の場合

例えば:

foo bar = barefoot

でなければなりません:

foo\u0020bar\u0020=\u0020barefoot

だから:

key: "foo bar "
value: " barefoot"
于 2012-06-14T10:36:57.183 に答える
15

多分あなたは空白を脱出することができます:foo\ bar = barefoot

編集:おっと、プロパティを変更できないことはわかりませんでした。

于 2010-01-21T09:34:05.727 に答える
11

区切り文字は=スペースではなく、である必要があるようです。したがって、-keyValuePair.split("=")する必要があります。

これをJava.propertiesファイルからロードする場合は、java.util.Propertiesこのメソッドを拡張してオーバーライドできます

public synchronized void load(InputStream inStream) throws IOException

プロパティを正しく解析するようにします。

于 2010-01-21T09:38:38.650 に答える
4

「プロパティ」とは、Javaプロパティファイル(によって書き込まれる/読み取られるjava.util.Properties)を意味すると思います。

次に、自分で書くときに、

foo bar = barefoot

確かに次のように解釈する必要があります

key: foo
value: bar = barefoot

組み込みPropertiesクラスを使用してこれを構成する方法はありません。入力を操作するか(空白をエスケープし、_に変更して元に戻す...)、または独自のパーサーを作成する必要があります。明らかに、入力は実際にはJavaプロパティファイルではないため、独自のパーサーを作成する方がおそらく優れています:-)。

于 2010-01-21T09:37:34.557 に答える
-1
keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
               keyValuePair.substring(indexOf("="));  
于 2013-08-24T15:53:32.503 に答える