Java 属性配置无法正确读取双引号内的逗号
我使用classJava 属性配置无法正确读取双引号内的逗号,java,properties,delimiter,apache-commons,Java,Properties,Delimiter,Apache Commons,我使用classorg.apache.commons.configuration.PropertiesConfiguration来解释属性文件 PropertiesConfiguration props = new PropertiesConfiguration(path); String delimiter = props.getString("FIELD_DELIMITER"); 除了一个场景,一切都很好。当字段分隔符的值作为提供时,“ 然后,字符串分隔符的值被获取为“。 除此之外,所有其
org.apache.commons.configuration.PropertiesConfiguration
来解释属性文件
PropertiesConfiguration props = new PropertiesConfiguration(path);
String delimiter = props.getString("FIELD_DELIMITER");
除了一个场景,一切都很好。当字段分隔符的值作为提供时,“
然后,字符串分隔符
的值被获取为“
。
除此之外,所有其他值的行为与预期一致。例如,如果属性的给定形式为:
FIELD_DELIMITER="a"
然后字符串分隔符的值将作为“a”
获得(如预期)
我试图找出问题所在。我意识到编译器将其视为一个逗号分隔数组,只读取第一个字符,即“
,其余字符则保留。我希望读取的逗号根本不会被解释为值。这不应该以这种方式发生,尽管我调用的方法是getString()
,而不是getStringArray()
那我怎么读呢?
我无法更改分割值的默认分隔符,因为我必须以props.getStringArray()
的形式读取具有逗号分隔值的其他属性。根据,您似乎可以转义逗号
示例(来自文档):
#可以在令牌中转义逗号
commas.escape=Hi\,怎么了?
在这里提问之前,请不要以为我没有阅读过文档。如果你不相信这会发生,你自己试试吧@TomSo您声称您已经阅读了文档,并且您仍然不知道如何使用“,”作为字符串的一部分,尽管文档告诉您如何这样做?或者您想说文档中的解决方案不适合您?什么时候你还没有把它添加到问题中?请阅读Riaan回答中的我的评论,以了解我的情况@TomWell,看起来是时候更新问题来添加此信息了。你是对的,但我实际上无法更改属性文件,因为它将从其他源传递到代码中。在这种情况下,如果无法让文件所有者修改属性以转义逗号,则可能需要使用Apache Commons以外的其他内容。
FIELD_DELIMITER="a"