Java 属性中的键可以包含空白字符吗?
-
22-09-2019 - |
题
我们从数据库中获取属性(我们无法影响),并希望通过键/值映射来访问它们。我们面临的问题是其中一个属性键包含空白字符。
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("="));
不隶属于 StackOverflow