我们从数据库中获取属性(我们无法影响),并希望通过键/值映射来访问它们。 我们面临的问题是其中一个属性键包含空白字符。
foo bar = barefoot
这是 - 正确 - 解释如下
key: foo
value: bar = barefoot
有没有办法在键中包含空格,以便它不被解释为分隔符?我想这种行为就像预期的那样,但我想我可以尝试一下。
答案 0 :(得分:134)
您可以使用Java Unicode转义属性文件中的所有内容:
\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("="));