Can the key in a Java property include a blank character?

前端 未结 5 1503
陌清茗
陌清茗 2020-12-14 00:09

We are getting properties (that we can not influence) out of a database and want to access them by a key/value mapping. We are facing the problem that one of the property ke

相关标签:
5条回答
  • 2020-12-14 00:30
    keyValuePair = keyValuePair.substring(0,indexOf("=")).replaceAll("\\s+") + 
                   keyValuePair.substring(indexOf("="));  
    
    0 讨论(0)
  • 2020-12-14 00:31

    As it seems the delimiter should be =, not space. Hence - keyValuePair.split("=") should do.

    If you are loading this from a java .properties file, then you can extend java.util.Properties and override this method

    public synchronized void load(InputStream inStream) throws IOException
    

    so that it parses the properties correctly.

    0 讨论(0)
  • 2020-12-14 00:36

    Maybe you can escape the whitespaces: foo\ bar = barefoot

    Edit: Oops, I did not see that you can't change the properties.

    0 讨论(0)
  • 2020-12-14 00:43

    I assume by "properties", you mean a Java property file (as written/read by java.util.Properties).

    Then, as you write yourself,

    foo bar = barefoot
    

    must indeed be interpreted as

    key: foo
    value: bar = barefoot
    

    There's no way to configure this using the built-in Properties class. You must either manipulate your input (escape the whitespace, change it to _ and back...), or write your own parser. Writing your own parser is probably better, as obviously your input isn't really a Java properties file to begin with :-).

    0 讨论(0)
  • 2020-12-14 00:49

    You can escape every thing in properties file with Java Unicode:

    • \u003d for =
    • \u0020 for whitespace

    For example:

    foo bar = barefoot
    

    must be:

    foo\u0020bar\u0020=\u0020barefoot
    

    So will be:

    key: "foo bar "
    value: " barefoot"
    
    0 讨论(0)
提交回复
热议问题