如何转义等号登录属性文件

jos*_*hua 80 java escaping properties

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

table.whereclause=where id=100
Run Code Online (Sandbox Code Playgroud)

wrs*_*der 80

在您的具体示例中,您不需要转义等于 - 如果它是键的一部分,您只需要转义它.属性文件格式将在第一个未转义的等于作为值的一部分之后处理所有字符.

  • 不知道为什么这还没有被标记出来!最简单的正确答案!大多数时候人们都在寻找属性文件中的逃避价值! (11认同)
  • 小更正:将第一个未转义等于和尾随空格之后的所有字符视为值,即,值中的前导空格被删除。示例“myKey=我的值”与“myKey = 我的值”相同。 (2认同)

Moh*_*rid 78

另外,请javadoc上的类参考load(读者读者)方法Property

load(Reader reader)方法文档中,它说

关键包含了所有的从第一个非空格字符以及高达行的字符,但不包括第一转义 '=',':'或比行结束符等空白字符.所有这些密钥终止字符都可以通过使用前面的反斜杠字符转义它们来包含在密钥中; 例如,

\:\=
Run Code Online (Sandbox Code Playgroud)

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

希望有所帮助.


Pad*_*rag 21

Java中的默认转义字符是'\'.
但是,Java属性文件的格式为key = value,它应该在第一个等于值之后考虑所有内容.

  • 除了前导空格(哦和键和值之间的'='不是必需的,它可能是:或空格) (7认同)

mvm*_*vmn 16

避免这种问题的最佳方法是以编程方式构建属性然后存储它们.例如,使用这样的代码:

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

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

在我的情况下,输出是:

#Mon Aug 12 13:50:56 EEST 2013
table.whereclause=where id\=100
Run Code Online (Sandbox Code Playgroud)

如您所见,这是生成保证正确的.properties文件内容的简便方法.您可以根据需要添加任意数量的属性.


Mon*_*SSI 5

在我的情况下,两个领先的'\\'对我来说很好.

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