首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中读取特定的word属性值

在java中读取特定的word属性值
EN

Stack Overflow用户
提问于 2015-05-25 17:50:20
回答 2查看 94关注 0票数 0

我有一个包含键及其值的属性文件,其中的值是由多个值组成的字符串:

代码语言:javascript
复制
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 10.0中,在[D-2] Document 2中有值0.0,在[D-3] Document 3中有值0.039236154

我的问题是,我如何阅读[D-3]并给出它作为0.039236154的价值

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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作为键。

下面是从文件中读取的示例代码:

代码语言:javascript
复制
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]));
}
票数 0
EN

Stack Overflow用户

发布于 2015-05-25 18:17:51

从上面的value中,我了解到您的值是由space分隔的。

下面的片段会对你有帮助。

代码语言:javascript
复制
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")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30443576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档