Javaプロパティのキーには、空白のキャラクターを含めることはできますか?

StackOverflow https://stackoverflow.com/questions/2108103

  •  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("="));  
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top