1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package oshi.util;
18
19 import java.util.HashMap;
20 import java.util.Map;
21 import java.util.regex.Matcher;
22 import java.util.regex.Pattern;
23
24
25
26
27
28
29 public abstract class ParseUtil {
30
31
32
33
34 final private static String Hertz = "Hz";
35 final private static String kiloHertz = "k" + Hertz;
36 final private static String megaHertz = "M" + Hertz;
37 final private static String gigaHertz = "G" + Hertz;
38 final private static String teraHertz = "T" + Hertz;
39 final private static String petaHertz = "P" + Hertz;
40 final private static Map<String, Long> multipliers;
41
42 static {
43 multipliers = new HashMap<String, Long>();
44 multipliers.put(Hertz, 1L);
45 multipliers.put(kiloHertz, 1000L);
46 multipliers.put(megaHertz, 1000000L);
47 multipliers.put(gigaHertz, 1000000000L);
48 multipliers.put(teraHertz, 1000000000000L);
49 multipliers.put(petaHertz, 1000000000000000L);
50 }
51
52
53
54
55
56
57
58
59 public static long parseHertz(String hertz) {
60 Pattern pattern = Pattern.compile("(\\d+(.\\d+)?) ?([kMGT]?Hz)");
61 Matcher matcher = pattern.matcher(hertz.trim());
62
63 if (matcher.find() && (matcher.groupCount() == 3)) {
64 try {
65 Double value = Double.valueOf(matcher.group(1));
66 String unit = matcher.group(3);
67
68 if (multipliers.containsKey(unit)) {
69 value = value * multipliers.get(unit);
70 return value.longValue();
71 }
72 } catch (NumberFormatException e) {
73 }
74 }
75
76 return -1L;
77 }
78
79 }