【问题标题】:Java ResourceBundle leading whitespace in valuesJava ResourceBundle 值中的前导空格
【发布时间】:2012-06-02 18:06:15
【问题描述】:

我正在尝试Oracle's documentations 给出的示例。如该页面所示,java 文件为 here。现在有了这个 java 文件,我在同一目录中保留了一个 LabelsBundle.properties 文件。

# This is the default LabelsBundle.properties file
s1 = computer
s2 = disk
s3 = monitor
s4 = keyboard

似乎在读取值时不会忽略尾随空格,而忽略前导空格。

所以如果我希望前导空格在那里,我该怎么办?

换句话说,我需要做什么才能将s1的值读取为

 computer

而不是

computer

?

【问题讨论】:

    标签: java whitespace resourcebundle


    【解决方案1】:

    Unicode 转义序列 \u0020 应该这样做,因为属性解析器应该将其识别为实际值,并且 Java 字符串应该将 \u0020 解释为空格的 Unicode 代码点。

    或者,IIRC,您可以使用像 \ my value 这样的反斜杠来转义空格。也适用于键。

    【讨论】:

    • \u0020 可以在没有任何编码更改的情况下工作吗?和@Zaki:我试过并且没有改变任何编码,``工作!?
    • 是的,因为\u0020 是代码。实际上,native2ascii 工具就是这样做的:将 ASCII 范围之外的所有字符转换为此类 Unicode 转义序列,以确保在将属性代码本身视为 ASCII 时正确加载属性文件而不会破坏字符。
    • 另外,我可以在不更改属性文件的情况下这样做吗?我的意思是在java代码中?
    • 如果您的意思是,将属性解析器配置为不去除前导空格,那么不会。除非你自己动手并使用它,但对我来说,这似乎比编辑属性文件更费力,而且毫无意义。
    【解决方案2】:

    你可以用反冲来逃避空间:

    s1 =\ computer
    

    【讨论】:

    • 另外,我可以在不更改属性文件的情况下这样做吗?我的意思是在java代码中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 2013-08-31
    • 2014-04-27
    相关资源
    最近更新 更多