如何转义属性文件中的等号

如何在Java属性文件中转义等号( = )? 我想在我的文件中添加如下内容:

 table.whereclause=where id=100 

此外,请参阅javadoc上Property类的load(Reader reader)方法

load(Reader reader)方法文件说

该键包含从第一个非空白字符开始,直到但不包括第一个非转义的'='':'或除行终止符以外的空白字符的行中的所有字符。 所有这些关键的终止字符都可以通过用前面的反斜杠字符转义来包含在键中; 例如,

 \:\= 

将是两个字符的键":=". 行结束符可以使用\r\n转义序列来包含。 跳过密钥后的任何空格; 如果键后面的第一个非空白字符是'='':' ,则忽略它,并且之后的任何空格字符也被跳过。 线上的所有剩余字符成为关联元素string的一部分; 如果没有剩余的字符,则该元素是空string"" 。 一旦识别了构成密钥和元素的原始字符序列,则如上所述执行转义处理。

希望有所帮助。

在你的具体例子中,你不需要逃避平等 – 如果它是关键的一部分,你只需要逃避它。 属性文件格式将把第一个非转义的等号之后的所有字符视为值的一部分。

Java中的默认转义字符是'\'。
但是,Java属性文件的格式为key = value,应该先考虑第一个等于value的值。

避免这种以编程方式构build属性并将其存储的问题避免的最好方法。 例如,使用这样的代码:

 java.util.Properties props = new java.util.Properties(); props.setProperty("table.whereclause", "where id=100"); props.store(System.out, null); 

这将输出到System.out正确转义的版本。

在我的情况下,输出是:

 #Mon Aug 12 13:50:56 EEST 2013 table.whereclause=where id\=100 

正如你所看到的,这是一个简单的方法来生成.properties文件的内容,保证是正确的。 你可以放置尽可能多的属性,你想要的。

就我而言,两个领先的“\\”对我来说工作得很好。

例如:如果你的单词包含'#'字符(例如aa#100,你可以用两个前导'\\'

  key= aa\\#100 

你可以看看这里Java属性中的键是否包含一个空白字符?

换成等于'='\ u003d

table.whereclause =其中id = 100

键:[table.where条款] value:[where id = 100]

table.whereclause \ u003dwhere id = 100

key:[table.whereclause = where] value:[id = 100]

table.whereclause \ u003dwhere \ u0020id \ u003d100

key:[table.whereclause = where id = 100] value:[]

我已经能够在字符“:”中input值

 db_user="postgresql" db_passwd="this,is,my,password"