2017-06-20 58 views
-2

我正在使用类org.apache.commons.configuration.PropertiesConfiguration来解释属性文件。通过PropertiesConfiguration未正确读取双引号中的逗号

PropertiesConfiguration props = new PropertiesConfiguration(path); 
String delimiter = props.getString("FIELD_DELIMITER"); 

除了一种情况,一切都很好。当FIELD_DELIMITER值作为","

FIELD_DELIMTIER="," 

然后被提供,如"获得字符串delimiter的值。 除此之外,其他所有值都按预期表现。例如,如果给定的属性为:

FIELD_DELIMITER="a" 

然后字符串delimiter的值作为"a"获得(如预期)。

我试图找出问题所在。我意识到编译器会将其作为逗号分隔的数组,并且只读取第一个字符,即",然后离开其余部分。我期望阅读的逗号永远不会被解释为值。尽管如此,我不应该这样做,因为我称之为getString()而不是getStringArray()

那我该怎么读","呢? 我无法更改分割值的默认分隔符,因为我必须以props.getStringArray()的形式读取逗号分隔值的其他属性。

+1

真奇怪,这个类的Javadoc,告诉你该怎么做:https://commons.apache.org/proper/commons-configuration/apidocs /org/apache/commons/configuration2/PropertiesConfiguration.html。怎么可能? – Tom

+0

不要以为我在这里提问之前没有阅读过文档。如果你不相信发生这种情况,那就试试吧。 @Tom – Amita

+0

所以你声称你已经阅读过文档,并且你仍然不知道如何使用“,”作为字符串的一部分,尽管该文档告诉你如何做到这一点?或者你想说文档中的解决方案不适合你?什么时候你为什么不添加这个问题? – Tom

回答

0

根据JavaDoc,它看起来像你可以跳过逗号。

示例(从文档):

# commas may be escaped in tokens commas.escaped = Hi\, what'up?

+0

你是对的,但我实际上不能改变属性文件,因为它会传递给其他来源的代码。 – Amita

+1

在这种情况下,如果无法让文件的所有者修改属性以转义逗号,则可能需要使用Apache Commons以外的其他内容。 –