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

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