读取 java 中的特定单词属性值

Read a specific word properties value in java

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

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中,值为[=17] =]

我的问题是,如何读取 [D-3] 并将其值设为 0.039236154

从上面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")

要获取 [D-1]、[D-2] 等的值,您首先需要从文件中 read the lines

如果该行以 string.startsWith(""transmit"); 开头,则使用 string.split("=") 拆分字符串。用等号拆分它,因为这是拆分值和单词 "transmit".

拆分一个字符串 returns 一个 String 数组,您将希望获得索引 1 (string.split("=")1) 以获得 [D-1]0.0 [D-2]0.0 [D-3]0.039236154。注意:确保拆分的长度至少为二,以避免数组越界异常。

现在您有了字符串 [D-1]0.0 [D-2]0.0 [D-3]0.039236154。用这个将它按空格分开。然后,您可以遍历从拆分中获得的数组,并按 \] 拆分每个字符串,以将 [D-1] 和 0.0 分开。注意:您将在括号前使用双反斜杠,因为括号是正则表达式中的保留字符。

当您拆分值时,您可以将它们放入哈希映射并将 [D-x] 作为键。

这是从文件中读取后的示例代码:

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]));
}