我有一个包含键及其值的属性文件,其中的值是由多个值组成的字符串:
transmit=[D-1]0.0 [D-2]0.0 [D-3]0.039236154
key=transmit
value=[D-1]0.0 [D-2]0.0 [D-3]0.039236154这意味着传输在[D-1] Document 1和0.0中,在[D-2] Document 2中有值0.0,在[D-3] Document 3中有值0.039236154。
我的问题是,我如何阅读[D-3]并给出它作为0.039236154的价值
发布于 2015-05-25 18:28:18
要获得D1、D2等的值,首先需要从文件中提取read the lines。
如果行以string.startsWith(""transmit");开头,则使用string.split("=")拆分字符串。用等号来分割它,因为这就是将值和“传输”一词分开的原因。
拆分一个字符串将返回一个字符串数组,您将希望得到索引1 (string.split("=")1)来获取[D-1]0.0 [D-2]0.0 [D-3]0.039236154。注意:为了避免数组超出界限异常,请确保拆分的长度至少为2。
现在有了字符串[D-1]0.0 [D-2]0.0 [D-3]0.039236154。用这个把它分割成空格。然后,您可以循环从拆分中得到的数组,并通过\\]对每个字符串进行拆分,得到D-1和0.0分隔。注意:您将在括号前使用双反斜杠,因为括号是regex中的保留字符。
当您拆分这些值时,您可以将它们放入一个散列映射中,并以D作为键。
下面是从文件中读取的示例代码:
String start = "transmit=[D-1]0.0 [D-2]0.0 [D-3]0.039236154";
start = start.split("=")[1];
String[] split = start.split(" ");
HashMap<String, Double> transmitValues = new HashMap<String, Double>();
for(String str : split){
String[] s = str.split("\\]");
transmitValues.put(s[0] + "]", Double.parseDouble(s[1]));
}发布于 2015-05-25 18:17:51
从上面的value中,我了解到您的值是由space分隔的。
下面的片段会对你有帮助。
String[] tokens = transmit.split(" ");
Map<String, String> valueMap = new HashMap<>();
Pattern pattern = Pattern.compile("\\[((\\w-\\d))\\]([\\d.]*)");
for (final String token : tokens) {
Matcher matcher = pattern.matcher(token);
if (matcher.matches()) {
valueMap.put(matcher.group(1), matcher.group(3));
}
}
// access values using valueMap.get("D-1")https://stackoverflow.com/questions/30443576
复制相似问题