我们从数据库中获取属性(我们无法影响),并希望通过键/值映射来访问它们.我们面临的问题是其中一个属性键包含空白字符.
foo bar = barefoot
Run Code Online (Sandbox Code Playgroud)
这是 - 正确 - 解释如下
key: foo
value: bar = barefoot
Run Code Online (Sandbox Code Playgroud)
有没有办法在键中包含空格,以便它不被解释为分隔符?我猜这种行为就像预期的那样,但我想我可以试试这里.
如何#
在Java属性文件中转义哈希符号().
我们有一个使用Java属性文件的国际化框架.
有一个名为number的列,我们希望它的标题是#
.这个 ...
number=#
Run Code Online (Sandbox Code Playgroud)
......不起作用.
可能重复:
转义属性文件中的等号
在.properties文件中,我可以在第一个之后使用字符'='吗?
像这样:
url=http://www.example.org/test=
Run Code Online (Sandbox Code Playgroud)
它是否被允许,我在哪里可以知道它确实是允许的?
到目前为止它似乎工作,但我不太确定它不会在以后打破.
我想支持如下所示的属性文件格式(允许用引号将值括起来):
key1=value1
key2="value2"
key3='value'
Run Code Online (Sandbox Code Playgroud)
我的问题是 Java Properties 类实现是否像上面那样处理双引号/单引号值?我的意思是自动删除引号。
其实我试过不是,只是想在这里确认一下。所以我必须自己删除引号。
编辑:
对于我的简单案例,我在下面有一个代码:
String path = "/tmp/my.properties";
Properties p = new Properties();
p.load(new FileInputStream(new File(path)));
String v = p.getProperty("key2");
if((v.startsWith("\"") && v.endsWith("\"")) ||
(v.startsWith("\'") && v.endsWith("\'"))) {
v = v.substring(1, v.length()-1);
}
Run Code Online (Sandbox Code Playgroud)
有关处理此问题的最佳实践的任何建议?
谢谢
我key = value
在.properties文件中有一个属性:
give names: (1) code = xxx
Run Code Online (Sandbox Code Playgroud)
...但是当我试图获得该密钥时,它引发了一个错误:
在代码下找不到任何消息给出名称:(1)code = xxx
我试图逃避空白,\
但它没有用.
我需要逃避:
,(
和)
人物呢?
我正在考虑使用Spring JavaConfig和一些属性文件,但bean中的属性没有设置?在bean中没有设置?
这是我的WebConfig:
@Configuration
@EnableWebMvc
@PropertySource(value = "classpath:application.properties")
@Import(DatabaseConfig.class)
@ImportResource("/WEB-INF/applicationContext.xml")
public class WebMVCConfig extends WebMvcConfigurerAdapter {
private static final String MESSAGE_SOURCE = "/WEB-INF/classes/messages";
private static final Logger logger = LoggerFactory.getLogger(WebMVCConfig.class);
@Value("${rt.setPassword}")
private String RTPassword;
@Value("${rt.setUrl}")
private String RTURL;
@Value("${rt.setUser}")
private String RTUser;
@Bean
public ViewResolver resolver() {
UrlBasedViewResolver url = new UrlBasedViewResolver();
url.setPrefix("/WEB-INF/view/");
url.setViewClass(JstlView.class);
url.setSuffix(".jsp");
return url;
}
@Bean(name = "messageSource")
public MessageSource configureMessageSource() {
logger.debug("setting up message source");
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename(MESSAGE_SOURCE);
messageSource.setCacheSeconds(5);
messageSource.setDefaultEncoding("UTF-8");
return messageSource;
} …
Run Code Online (Sandbox Code Playgroud)