Java属性中的键可以包含空白字符吗?

时间:2010-01-21 09:30:45

标签: java properties key-value

我们从数据库中获取属性(我们无法影响),并希望通过键/值映射来访问它们。 我们面临的问题是其中一个属性键包含空白字符。

foo bar = barefoot

这是 - 正确 - 解释如下

key: foo
value: bar = barefoot

有没有办法在键中包含空格,以便它不被解释为分隔符?我想这种行为就像预期的那样,但我想我可以尝试一下。

5 个答案:

答案 0 :(得分:134)

您可以使用Java Unicode转义属性文件中的所有内容:

    {li> \u003d =
  • \u0020用于空白

例如:

foo bar = barefoot

必须是:

foo\u0020bar\u0020=\u0020barefoot

所以将会:

key: "foo bar "
value: " barefoot"

答案 1 :(得分:15)

也许你可以逃脱空白:foo\ bar = barefoot

编辑:糟糕,我没有看到你无法改变属性。

答案 2 :(得分:10)

看起来分隔符应该是=,而不是空格。 因此 - keyValuePair.split("=")应该这样做。

如果从java .properties文件加载,则可以扩展java.util.Properties并覆盖此方法

public synchronized void load(InputStream inStream) throws IOException

以便正确解析属性。

答案 3 :(得分:4)

我假设“属性”是指Java属性文件(由java.util.Properties编写/读取)。

然后,当你自己写作时,

foo bar = barefoot
确实必须将

解释为

key: foo
value: bar = barefoot

无法使用内置的Properties类进行配置。您必须操纵输入(转义空格,将其更改为_并返回...),或编写自己的解析器。编写自己的解析器可能更好,因为显然你的输入实际上不是一个Java属性文件: - )。

答案 4 :(得分:0)

keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
               keyValuePair.substring(indexOf("="));